




已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
恭喜你 选择了正确的AVR学习资料ATmega16的中断系统 ATmega16的中断源和中断向量 AVR一般拥有数十个中断源 每个中断源都有独立的中断向量 AVR的程序存储区的最低端 即从Flash地址的0 x0000开始用于放置中断向量 称作中断向量区 各种型号的AVR中断向量区的大小是不同的 由下式决定 中断向量区大小 中断源个数 每个中断向量占据字数 AVR的21个中断中 包含1个非屏蔽中断 RESET 3个外部中断 INT0 INT1 INT2 和17个内部中断 1 外部中断INT0 INT1和INT2是3个外部中断源 它们是分别由芯片外部引脚PD2 PD3 PB2上的电平的变化或状态触发的 通过对控制寄存器MCUCR和控制与状态寄存器MCUCSR的配置 外部中断可以定义为由PD2 PD3 PB2引脚上的电平的下降沿 上升沿 逻辑电平变化 或者低电平 INT2仅支持电平变化的边沿触发 触发 3个定时计数器触发的内部中断 MER2COMPTIMER2OVF定时溢出2TIMER1CAPT扑捉溢出1TIMER1COMPA定时比较ATIMER1COMPB定时比较BTIMER1OVF定时溢出2TIMER0OVF定时溢出0TIMER0COMP定时比较0 同步 异步串行接收和转发器USART的内部中断 USARTRXC接收一个字节USARTTXC发送一个字节USARTUDRE发送数据寄存器为空 其它内部中断 SPISTC为内部SPI串行接口传送结束中断ADC为ADC单元完成一次A D转换的中断EE RDY是片内的EEPROM就绪 对EEPROM的操作完成 中断ANA COMP是由内置的模拟比较器输出引发的中断TWI为内部两线串行接口的中断SPM RDY是对片内的Flash写操作完成中断 ATmega16的中断控制 中断优先级的确定 1 在AVR单片机中 一个中断在中断向量区中的位置决定了它的优先级 位于低地址的中断优先级高于位于高地址的中断 2 AVR单片机采用固定的硬件优先级方式 不支持通过软件对中断优先级的重新设定 AVR有两种机制不同的中断 带有中断标志的中断 可挂起 不带中断标志的中断 不能挂起 中断标志 在AVR中 大多数的中断都属于带中断标志的中断 中断标志概念每个中断源在其I O空间寄存器中具有自己的一个中断标志位 AVR的硬件系统在每个时钟周期内都会检测 接受 外部 内部 中断源的中断条件 一旦中断条件满足 AVR的硬件就会将置位相应的中断标志位 置为 1 表示向MCU提起中断请求 中断标志清除中断标志位一般在MCU响应该中断时 由硬件自动清除 或在中断服务程序中通过读 写专门数据寄存器的方式自动清除 中断标志位除了由硬件自动清除外也可以使用软件指令清除 注意 如用软件方法清除 清除的方法是对其写 1 不带 不设置 中断标志的中断 如配置为低电平触发的外部中断即为此类型的中断低电平中断的重要应用是唤醒处于休眠工作模式的MCU 三 中断屏蔽与管理 为全局中断允许控制位 中断允许的总控制位I 标志寄存器SREG中的I标志位SREG 7 每一个中断源都设置了独立的中断允许位 AVR对中断采用两级控制方式 这些中断允许位分散位于各中断源所属模块的控制寄存器中 AVR响应一个可屏蔽中断源 假定为A中断 的中断的条件是 1 响应A中断 全局中断允许标志AND中断A允许标志AND中断A标志2 AVR复位后 各个中断允许位以及全局中断允许位均被清零 这保证了程序在开始执行时 一般程序开头是对芯片内部以及外围系统的初始化配置 不会受到中断的干扰 3 在AVR复位后的用户初始化程序中 需要先对需要使用的中断源进行必要的配置 待系统初始化过程结束后再置位I 使系统进入正常的工作状态 开始响应中断请求 由于AVR在响应一个中断的过程中通过硬件将I标志位自动清零 这样就阻止了MCU响应其它中断 因此通常情况下 AVR是不能自动实现中断嵌套的 如要系统中必须要实现中断嵌套的应用 用户可在中断服务程序中使用指令将全局中断允许位开放 通过间接的方式实现中断的嵌套处理 四 中断嵌套 外部中断触发方式和特点 INT0 INT1 INT2的中断触发方式取决于用户程序对MCU控制寄存器MCUCR以及MCU控制与状态寄存器MCUCSR的设定 其中 INT0和INT1支持4种中断触发方式 INT2支持2种 任意电平变化触发表示只要引脚上有逻辑电平的变化就会产生中断申请 不管是上升沿还是下降沿都引起中断触发 4种触发方式中 还有以下的一些不同的特点 低电平触发是不带中断标志类型的 即只要中断输入引脚PD2或PD3保持低电平 那么将一直会产生中断申请 2 MCU对INT0和INT1的引脚上的上升沿或下降沿变化的识别 触发 需要I O时钟信号的存在 由I O时钟同步检测 属于同步边沿触发的中断类型 3 MCU对INT2的引脚上的上升沿或下降沿变化的识别 触发 以及低电平的识别 触发 是通过异步方式检测的 不需要I O时钟信号的存在 因此 这类触发类型的中断经常作为外部唤醒源 用于将处在Idle休眠模式 以及处在各种其它休眠模式的MCU唤醒 这是由于除了在空闲 Idel 模式时 I O时钟信号还保持继续工作 在其它各种休眠模式下 I O时钟信号均是处在暂停状态的 4 如果使用低电平触发方式的中断作为唤醒源 将MCU从掉电模式 Power down 中唤醒时 电平拉低后仍需要维持一段时间才能将MCU唤醒 这是为了提高了MCU的抗噪性能 拉低的触发电平将由看门狗的时钟信号采样两次 在通常的5V电源和25 时 看门狗的时钟周期为1 s 如果电平拉低保持2次采样周期的时间 或者一直保持到MCU启动延时 start uptime 过程之后 MCU将被唤醒并进入中断服务 如果该电平的保持时间能够满足看门狗时钟的两次采样 但在启动延时 start uptime 过程完成之前就消失了 那么MCU仍将被唤醒 但不会触发中断进入中断服务程序 所以 为了保证既能将MCU唤醒 又能触发中断 中断触发电平必须维持足够长的时间 5 如果设置了允许响应外部中断的请求 则即便是引脚PD2 PD3 PB2设置为输出方式工作 引脚上的电平变化也会产生外部中断触发请求 这一特性为用户提供了使用软件产生中断的途径 与外部中断相关的寄存器和标志位 在ATmega16中 与外部中断有关的寄存器有4个 共有11个标志位 其作用分别是3个外部中断各自的中断标志位 中断允许控制位 和用于定义外部中断的触发类型 1 MCU中断方式控制寄存器 MCUCR MCU控制寄存器MCUCR的低4位为INT0 ISC01 ISC00 和INT1 ISC11 ISC10 中断触发类型控制位 MCU对INT0 INT1引脚上电平值的采样在边沿检测前 1 如果选择脉冲边沿触发或电平变化中断的方式 那么在INT0 INT1引脚上的一个脉宽大于一个时钟周期的脉冲变化将触发中断 过短的脉冲则不能保证触发中断 2 如果选择低电平触发中断 那么低电平必须保持到当前指令执行完成才触发中断 如果是低电平触发方式的话 中断请求将一直保持到引脚上的低电平消失为止 2 MCU控制和状态寄存器 MCUCSR MCU控制和状态寄存器MCUCSR中的第6位 ISC2 为INT2的中断触发类型控制位 3 通用中断允许控制寄存器 GICR 通用中断控制寄存器GICR的高3位为INT0 INT1和INT2的中断允许控制位 GICR寄存器中相应的中断允许位被置为 1 当外部引脚INT0 或INT1 或INT2 上的电平变化时 MCU将会响应相应的中断请求 4 通用中断标志寄存器 GIFR 中断标志寄存器GIFR的高3位为INT0 INT1和INT2的中断标志位 当INT2 0引脚上的有效事件满足中断触发条件后 INTF2 0位会变成 1 如果此时SREG寄存器中I 1 以及GICR寄存器中的INTn被置为 1 MCU将响应中断请求 跳至相应的中断向量处开始执行中断服务程序 同时硬件自动将INTFn标志位清零 用户可以使用指令将INTFn清除 清除的方式是写逻辑 1 到INTFn 将标志清零 当INT0 INT1 设置为低电平触发方式时 标志位INTF0 INTF1 始终为 0 这并不意味着不产生中断请求 而是低电平触发方式是不带中断标志类型的中断触发 在系统程序的初始化部分中对外部中断进行设置时 定义或改变触发方式 应先将GICR寄存器中该中断的中断允许位清零 禁止MCU响应该中断后再设置ISCn位 而在开放中断允许前 一般应通过向GIFR寄存器中的中断标志位INTFn写入逻辑 1 将该中断的中断标志位清除 然后开放中断 这样可以防止在改变ISCn的过程中误触发中断 中断服务程序的编写中断服务程序的编写 编写中断服务程序的两个基本原则 1 全面 仔细考虑中断现场的保护和恢复 2 中断服务程序应尽可能的短 不同高级语言开发环境中对编写中断服务程序的语法规则和处理方法是不同的 用户在编写中断服务程序前 应对所使用开发平台 中断程序的编写方法 中断的处理方法等有较好的了解 使用ICCAVR等高级语言编写中断服务程序时 用户通常不必考虑中断现场保护和恢复的处理 这是由于编译器在编译中断服务程序的源代码时 会在生成的目标代码中自动加入相应的中断现场保护和恢复的指令 同时自动采用RETI指令作为中断服务的返回指令 在ICCAVRR中 只要用 pragma伪指令和中断向量说明中断服务程序的入口地址 中断服务函数按以下格式定义 pragmainterrupt handler 如 INT0中断服务程序 pragmainterrupt handlerint0 isr 2voidint0 isr void 中断服务程序 C编译器会自动帮助用户产生正确的中断向量处的以及初始化堆栈指针的代码 同时在中断服务程序中自动生成中断现场保护和恢复 函数中用到的全部寄存器保护 及使用RETI指令返回 图中使用了两个按键K1 K2 按键的一端分别与PD2 INT0 PD3 INT1 连接 INT0和INT1作为外部中断的输入 采用电平变化的下降沿触发方式 当K1 K2 按下时 会在PD2 PD3 引脚上产生一个高电平到低电平的跳变 触发INT0或INT1中断 外部中断应用实例 硬件电路 应用中断应举例 定时扫描数码管 INT0 INT1按键下降沿出发中断 使键值分别加减1 功能 INT0中断函数 使键值加1 pragmainterrupt handlerInt0 isr 2voidInt0 isr void delay nms 20 延时大约20毫秒 去抖if KEY0 0 再次判断按键是否按下 while KEY0 0 等待按键释放Key Number 键值加1 功能 INT1中断函数 使键值减1 pragmainterrupt handlerInt1 isr 3voidInt1 isr void delay nms 20 延时大约20毫秒 去抖if KEY1 0 再次判断按键是否按下 while KEY1 0 等待按键释放Key Number 键值减1 功能 Timer0溢出中断 数码管扫描 pragmainterrupt handlerTimer0 ovf isr 10voidTimer0 ovf isr void Display One SMG 2 Key Number 100 在第三位数码管显示百位Display One SMG 1 Key Number 100 10 在第二位数码管显示十位Display One SMG 0 Key Number 100 10 在第一位数码管显示个位 功能 Timer0初始化程序 voidTimer0 Init void TCCR0 0 x00 停止Timer0工作TCNT0 0 x00 清TCNT
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年天津市合同监督管理办法已经修订
- 油墨厂二甲基甲酰胺存储规章
- 九年级语文下册 第四单元说课稿 (新版)新人教版
- 2024-2025学年高中历史 第六单元 现代世界的科技与文化 第29课 百花齐放 百家争鸣说课稿 岳麓版必修3
- 第九节 无人机自动跟随说课稿-2025-2026学年初中信息技术甘教版2022八年级下册-甘教版2022
- 中医学员考试题及答案大全
- 泰安市检察院招聘考试真题2024
- 福建专升本语文总结(3篇)
- 2025年上海人民警察招聘考试申论题库含答案详解
- 宠物猫寄养与宠物保险咨询服务合同
- 护理专业新进展介绍
- 大疆无人机培训课件
- 中级消防员维保培训课件
- 小儿推拿进修总结汇报
- 2025公司应急预案演练计划(5篇)
- 医疗机构医院全员培训制度
- 2025仓库保管员试题及答案
- 生猪养殖场实施方案
- 矛盾纠纷化解培训课件
- 2025年成人高考语文试题及答案
- DB11-T 2103.14-2025 社会单位和重点场所消防安全管理规范 第14部分:电动汽车充电站
评论
0/150
提交评论