




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、ATmega128的中断系统的中断系统 ATmega128的中断源和中断向量的中断源和中断向量 AVR一般拥有数十个中断源,每个中断源都有独立的中断向量一般拥有数十个中断源,每个中断源都有独立的中断向量。 AVR的程序存储区的最低端,即从的程序存储区的最低端,即从Flash地址的地址的0 x0000开始开始用于放置中断向量,称作中断向量区。用于放置中断向量,称作中断向量区。 各种型号的各种型号的AVR中断向量区的大小是不同的,由下式决定:中断向量区的大小是不同的,由下式决定:中断向量区大小中断向量区大小 = 中断源个数中断源个数 每个中断向量占据字数每个中断向量占据字数 AVR的的21个中断中
2、,包含个中断中,包含1个非屏蔽中断(个非屏蔽中断(RESET)3个外个外部中断(部中断(INT0、INT1、INT2)和)和17个内部中断,个内部中断, 1.外部中断外部中断 INT0、INT1和和INT2是是3个外部中断源,它们是分别由芯片个外部中断源,它们是分别由芯片外部引脚外部引脚PD2、PD3、PB2上的电平的变化或状态触发的。通上的电平的变化或状态触发的。通过对控制寄存器过对控制寄存器MCUCR和控制与状态寄存器和控制与状态寄存器MCUCSR的配的配置,外部中断可以定义为由置,外部中断可以定义为由PD2、PD3、PB2引脚上的电平的引脚上的电平的下降沿、上升沿、逻辑电平变化,或者低电
3、平(下降沿、上升沿、逻辑电平变化,或者低电平(INT2仅支持仅支持电平变化的边沿触发)触发。电平变化的边沿触发)触发。3个定时计数器触发的内部中断个定时计数器触发的内部中断 MER2 COMP TIMER2 OVF 定时溢出定时溢出2TIMER1 CAPT 扑捉溢出扑捉溢出1TIMER1 COMPA 定时比较定时比较ATIMER1 COMPB 定时比较定时比较BTIMER1 OVF 定时溢出定时溢出2TIMER0 OVF 定时溢出定时溢出0TIMER0 COMP 定时比较定时比较0同步同步/异步串行接收和转发器异步串行接收和转发器USART的内部中断的内部中断USART RXC 接收一个字节接
4、收一个字节USART TXC 发送一个字节发送一个字节USART UDRE 发送数据寄存器为空发送数据寄存器为空 其它内部中断其它内部中断SPI STC为内部为内部SPI串行接口传送结束中断串行接口传送结束中断ADC为为ADC单元完成一次单元完成一次A/D转换的中断转换的中断EE_RDY是片内的是片内的EEPROM就绪(对就绪(对EEPROM的操作完成)中断的操作完成)中断ANA_COMP是由内置的模拟比较器输出引发的中断是由内置的模拟比较器输出引发的中断TWI为内部两线串行接口的中断为内部两线串行接口的中断SPM_RDY是对片内的是对片内的Flash写操作完成中断写操作完成中断ATmega1
5、6的中断控制的中断控制中断优先级的确定中断优先级的确定1.在在AVR单片机中,一个中断在中断向量区中的位置决定了单片机中,一个中断在中断向量区中的位置决定了 它它的优先级,位于低地址的中断优先级高于位于高地址的中断。的优先级,位于低地址的中断优先级高于位于高地址的中断。2AVR单片机采用固定的硬件优先级方式,不支持通过软件单片机采用固定的硬件优先级方式,不支持通过软件对中断优先级的重新设定。对中断优先级的重新设定。 AVR有两种机制不同的中断:有两种机制不同的中断:带有中断标志的中断(可挂起)带有中断标志的中断(可挂起)不带中断标志的中断(不能挂起)。不带中断标志的中断(不能挂起)。中断标志中
6、断标志在在AVR中,大多数的中断都属于带中断标志的中断。中,大多数的中断都属于带中断标志的中断。 中断标志概念中断标志概念 每个中断源在其每个中断源在其I/O空间寄存器中具有自己的一个中断标志位。空间寄存器中具有自己的一个中断标志位。AVR的硬件系统在每个时钟周期内都会检测(接受)外部(内的硬件系统在每个时钟周期内都会检测(接受)外部(内部)中断源的中断条件。一旦中断条件满足,部)中断源的中断条件。一旦中断条件满足,AVR的硬件就会的硬件就会将置位相应的中断标志位(置为将置位相应的中断标志位(置为“1”),表示向),表示向MCU提起中断提起中断请求。请求。中断标志清除中断标志清除中断标志位一般
7、在中断标志位一般在MCU响应该中断时,由响应该中断时,由硬件自动清除硬件自动清除,或在,或在中断服务程序中通过中断服务程序中通过读读/写专门数据寄存器写专门数据寄存器的方式自动清除。的方式自动清除。中断标志位除了由硬件自动清除外也可以使用软件指令清除,中断标志位除了由硬件自动清除外也可以使用软件指令清除,注意:如用注意:如用软件方法清除软件方法清除,清除的方法是对其写,清除的方法是对其写“1”。 不带(不设置)中断标志的中断:不带(不设置)中断标志的中断:如配置为低电平触发的外部中断即为此类型的中断如配置为低电平触发的外部中断即为此类型的中断低电平中断的重要应用是唤醒处于休眠工作模式的MCU。
8、 三、中断屏蔽与管理三、中断屏蔽与管理 为全局中断允许控制位:为全局中断允许控制位:中断允许的总控制位中断允许的总控制位I(标志寄存器(标志寄存器SREG中的中的I标志位标志位SREG.7)每一个中断源都设置了独立的中断允许位每一个中断源都设置了独立的中断允许位 AVR对中断采用两级控制方式。对中断采用两级控制方式。这些中断允许位分散位于各中断源所属模块的控制寄存器中。这些中断允许位分散位于各中断源所属模块的控制寄存器中。AVR响应一个可屏蔽中断源(假定为响应一个可屏蔽中断源(假定为A中断)的中断的条件是:中断)的中断的条件是:1.响应响应A中断中断 = 全局中断允许标志全局中断允许标志 AN
9、D 中断中断A允许标志允许标志 AND 中断中断A标志标志2.AVR复位后,各个中断允许位以及全局中断允许位均被清零,这保证了复位后,各个中断允许位以及全局中断允许位均被清零,这保证了程序在开始执行时(一般程序开头是对芯片内部以及外围系统的初始化配置)程序在开始执行时(一般程序开头是对芯片内部以及外围系统的初始化配置)不会受到中断的干扰。不会受到中断的干扰。3.在在AVR复位后的用户初始化程序中,需要先对需要使用的中断源进行必复位后的用户初始化程序中,需要先对需要使用的中断源进行必要的配置。待系统初始化过程结束后再置位要的配置。待系统初始化过程结束后再置位I,使系统进入正常的工作状态,使系统进
10、入正常的工作状态,开始响应中断请求。开始响应中断请求。由于由于AVR在响应一个中断的过程中通过硬件将在响应一个中断的过程中通过硬件将I标志位自动清零,标志位自动清零,这样就阻止了这样就阻止了MCU响应其它中断。因此通常情况下,响应其它中断。因此通常情况下,AVR是不是不能自动实现中断嵌套的。如要系统中必须要实现中断嵌套的应能自动实现中断嵌套的。如要系统中必须要实现中断嵌套的应用,用户可在中断服务程序中使用指令将全局中断允许位开放,用,用户可在中断服务程序中使用指令将全局中断允许位开放,通过间接的方式实现中断的嵌套处理。通过间接的方式实现中断的嵌套处理。四、中断嵌套四、中断嵌套 外部中断触发方式
11、和特点外部中断触发方式和特点 INT0、INT1、INT2的中断触发方式取决于用户程序对的中断触发方式取决于用户程序对MCU控制寄存器控制寄存器MCUCR以及以及MCU控制与状态寄存器控制与状态寄存器MCUCSR的设定。其中,的设定。其中,INT0和和INT1支持支持4种中断触发方式,种中断触发方式,INT2支持支持2种。种。 任意电平变化触发表示只要引脚上有逻辑电平的变化就会任意电平变化触发表示只要引脚上有逻辑电平的变化就会产生中断申请(不管是上升沿还是下降沿都引起中断触发)产生中断申请(不管是上升沿还是下降沿都引起中断触发) 4种触发方式中,还有以下的一些不同的特点:种触发方式中,还有以下
12、的一些不同的特点:低电平触发是不带中断标志类型的,即只要中断输入引脚低电平触发是不带中断标志类型的,即只要中断输入引脚PD2或或PD3保持低电平,那么将一直会产生中断申请。保持低电平,那么将一直会产生中断申请。2.MCU对对INT0和和INT1的引脚上的上升沿或下降沿变化的识别的引脚上的上升沿或下降沿变化的识别(触发),需要(触发),需要I/O时钟信号的存在(由时钟信号的存在(由I/O时钟同步检测),时钟同步检测),属于同步边沿触发的中断类型。属于同步边沿触发的中断类型。3.MCU对对INT2的引脚上的上升沿或下降沿变化的识别(触的引脚上的上升沿或下降沿变化的识别(触发),以及低电平的识别(触
13、发)是通过异步方式检测的,不发),以及低电平的识别(触发)是通过异步方式检测的,不需要需要I/O时钟信号的存在。因此,这类触发类型的中断经常作时钟信号的存在。因此,这类触发类型的中断经常作为外部唤醒源,用于将处在为外部唤醒源,用于将处在Idle休眠模式,以及处在各种其它休眠模式,以及处在各种其它休眠模式的休眠模式的MCU唤醒。这是由于除了在空闲(唤醒。这是由于除了在空闲(Idel)模式时,)模式时,I/O时钟信号还保持继续工作,在其它各种休眠模式下,时钟信号还保持继续工作,在其它各种休眠模式下,I/O时时钟信号均是处在暂停状态的。钟信号均是处在暂停状态的。4.如果使用低电平触发方式的中断作为唤
14、醒源,将如果使用低电平触发方式的中断作为唤醒源,将MCU从掉电从掉电模式(模式(Power-down)中唤醒时,电平拉低后仍需要维持一段时)中唤醒时,电平拉低后仍需要维持一段时间才能将间才能将MCU唤醒,这是为了提高了唤醒,这是为了提高了MCU的抗噪性能。拉低的的抗噪性能。拉低的触发电平将由看门狗的时钟信号采样两次(在通常的触发电平将由看门狗的时钟信号采样两次(在通常的5V电源和电源和25时,看门狗的时钟周期为时,看门狗的时钟周期为1s)。如果电平拉低保持)。如果电平拉低保持2次采样次采样周期的时间,或者一直保持到周期的时间,或者一直保持到MCU启动延时(启动延时(start-up time)
15、过)过程之后,程之后,MCU将被唤醒并进入中断服务。如果该电平的保持时将被唤醒并进入中断服务。如果该电平的保持时间能够满足看门狗时钟的两次采样,但在启动延时(间能够满足看门狗时钟的两次采样,但在启动延时(start-up time)过程完成之前就消失了,那么)过程完成之前就消失了,那么MCU仍将被唤醒,但不会仍将被唤醒,但不会触发中断进入中断服务程序。所以,为了保证既能将触发中断进入中断服务程序。所以,为了保证既能将MCU唤醒,唤醒,又能触发中断,中断触发电平必须维持足够长的时间。又能触发中断,中断触发电平必须维持足够长的时间。5.如果设置了允许响应外部中断的请求如果设置了允许响应外部中断的请
16、求,则即便是引脚则即便是引脚PD2、PD3、PB2设置为输出方式工作设置为输出方式工作,引脚上的电平变化也会产生外部中断引脚上的电平变化也会产生外部中断触发请求。这一特性为用户提供了使用软件产生中断的途径。触发请求。这一特性为用户提供了使用软件产生中断的途径。与外部中断相关的寄存器和标志位与外部中断相关的寄存器和标志位 在在ATmega16中,与外部中断有关的寄存器有中,与外部中断有关的寄存器有4个,共有个,共有11个标志位。其作用分别是个标志位。其作用分别是3个外部中断各自的个外部中断各自的中断标志位,中断中断标志位,中断允许控制位,允许控制位,和用于和用于定义外部中断的触发类型定义外部中断
17、的触发类型。 1) MCU中断方式控制寄存器中断方式控制寄存器MCUCR MCU控制寄存器控制寄存器MCUCR的低的低4位为位为INT0(ISC01、ISC00)和)和INT1(ISC11、ISC10)中断触发类型控制位)中断触发类型控制位 MCU对对INT0、INT1引脚上电平值的采样在边沿检测前。引脚上电平值的采样在边沿检测前。1.如果选择脉冲边沿触发或电平变化中断的方式如果选择脉冲边沿触发或电平变化中断的方式,那么在,那么在INT0、INT1引脚上的一个脉宽大于一个时钟周期的脉冲变化将触发中引脚上的一个脉宽大于一个时钟周期的脉冲变化将触发中断,过短的脉冲则不能保证触发中断。断,过短的脉冲
18、则不能保证触发中断。2.如果选择低电平触发中断,如果选择低电平触发中断,那么低电平必须保持到当前指令那么低电平必须保持到当前指令执行完成才触发中断。如果是低电平触发方式的话,中断请求执行完成才触发中断。如果是低电平触发方式的话,中断请求将一直保持到引脚上的低电平消失为止。将一直保持到引脚上的低电平消失为止。2)MCU控制和状态寄存器控制和状态寄存器MCUCSR MCU控制和状态寄存器控制和状态寄存器MCUCSR中的第中的第6位(位(ISC2)为)为INT2的中断触发类型控制位的中断触发类型控制位 3)通用中断允许控制寄存器)通用中断允许控制寄存器 GICR 通用中断控制寄存器通用中断控制寄存器
19、GICR的高的高3位为位为INT0、INT1和和INT2的中断允许控制位的中断允许控制位 。GICR寄存器中相应的中断允许位被置为寄存器中相应的中断允许位被置为“1”,当外部引脚,当外部引脚INT0(或(或INT1、或、或INT2)上的电平变化时,)上的电平变化时,MCU将会响应相应的中断请求。将会响应相应的中断请求。 4) 通用中断标志寄存器通用中断标志寄存器GIFR中断标志寄存器中断标志寄存器GIFR的高的高3位为位为INT0、INT1和和INT2的中断标志位的中断标志位 当当INT2.0引脚上的有效事件满足中断触发条件后,引脚上的有效事件满足中断触发条件后,INTF2.0位会变成位会变成
20、“1”。如果此时。如果此时SREG寄存器中寄存器中I = 1,以及,以及GICR寄存器中的寄存器中的INTn被置为被置为“1”,MCU将响应中断请求,将响应中断请求,跳至相应的中断向量处开始执行中断服务程序,同时硬件自动跳至相应的中断向量处开始执行中断服务程序,同时硬件自动将将INTFn标志位清零。标志位清零。 用户可以使用指令将用户可以使用指令将INTFn清除,清除的方式是写逻辑清除,清除的方式是写逻辑“1”到到INTFn,将标志清零。当,将标志清零。当INT0(INT1)设置为低电平触发方式时,)设置为低电平触发方式时,标志位标志位INTF0(INTF1)始终为)始终为“0”,这并不意味着
21、不产生中断请,这并不意味着不产生中断请求,而是低电平触发方式是不带中断标志类型的中断触发。求,而是低电平触发方式是不带中断标志类型的中断触发。 在系统程序的初始化部分中对外部中断进行设置时(定在系统程序的初始化部分中对外部中断进行设置时(定义或改变触发方式),应先将义或改变触发方式),应先将GICR寄存器中该中断的中断允寄存器中该中断的中断允许位清零,禁止许位清零,禁止MCU响应该中断后再设置响应该中断后再设置ISCn位。位。 而在开放中断允许前,一般应通过向而在开放中断允许前,一般应通过向GIFR寄存器中的寄存器中的中断标志位中断标志位INTFn写入逻辑写入逻辑“1”,将该中断的中断标志位清
22、,将该中断的中断标志位清除,然后开放中断。这样可以防止在改变除,然后开放中断。这样可以防止在改变ISCn的过程中误触的过程中误触发中断。发中断。中断服务程序的编写中断服务程序的编写中断服务程序的编写中断服务程序的编写编写中断服务程序的两个基本原则:编写中断服务程序的两个基本原则: 1.全面、仔细考虑中断现场的保护和恢复。全面、仔细考虑中断现场的保护和恢复。2.中断服务程序应尽可能的短中断服务程序应尽可能的短 不同高级语言开发环境中对编写中断服务程序的语法规则不同高级语言开发环境中对编写中断服务程序的语法规则和处理方法是不同的。用户在编写中断服务程序前,应对所使和处理方法是不同的。用户在编写中断
23、服务程序前,应对所使用开发平台,中断程序的编写方法,中断的处理方法等有较好用开发平台,中断程序的编写方法,中断的处理方法等有较好的了解。的了解。 使用使用ICCAVR等高级语言编写中断服务程序时,用户通常等高级语言编写中断服务程序时,用户通常不必考虑中断现场保护和恢复的处理,这是由于编译器在编译不必考虑中断现场保护和恢复的处理,这是由于编译器在编译中断服务程序的源代码时,会在生成的目标代码中自动加入相中断服务程序的源代码时,会在生成的目标代码中自动加入相应的中断现场保护和恢复的指令,同时自动采用应的中断现场保护和恢复的指令,同时自动采用RETI指令作指令作为中断服务的返回指令。为中断服务的返回
24、指令。 在在ICCAVRR中,只要用中,只要用#pragma 伪指令和中断向量说明伪指令和中断向量说明中断服务程序的入口地址。中断服务程序的入口地址。中断服务函数按以下格式定义:中断服务函数按以下格式定义:#pragma interrupt_handler #pragma interrupt_handler : 如:如:INT0中断服务程序中断服务程序#pragma interrupt_handler int0_isr:2void int0_isr(void) 中断服务程序中断服务程序 C编译器会自动帮助用户产生正确的中断向量处的以及初编译器会自动帮助用户产生正确的中断向量处的以及初始化堆栈指
25、针的代码,同时在中断服务程序中自动生成中断现始化堆栈指针的代码,同时在中断服务程序中自动生成中断现场保护和恢复(函数中用到的全部寄存器保护)及使用场保护和恢复(函数中用到的全部寄存器保护)及使用RETI指令返回。指令返回。图中使用了两个按键图中使用了两个按键K1、K2,按键的,按键的一端分别与一端分别与PD2(INT0)、)、PD3(INT1)连接。)连接。INT0和和INT1作为外部作为外部中断的输入,采用电平变化的下降沿触中断的输入,采用电平变化的下降沿触发方式,当发方式,当K1(K2)按下时,会在)按下时,会在PD2(PD3)引脚上产生一个高电平到)引脚上产生一个高电平到低电平的跳变,触
26、发低电平的跳变,触发INT0或或INT1中断。中断。外部中断应用实例外部中断应用实例硬件电路硬件电路 应用中断应举例:应用中断应举例:定时扫描数码管定时扫描数码管,INT0、INT1按键下降沿出发中断按键下降沿出发中断,使键值分别加减使键值分别加减1/* 功功 能能: INT0中断函数,使键值加中断函数,使键值加1 */#pragma interrupt_handler Int0_isr:2void Int0_isr(void) delay_nms(20); /延时大约延时大约20毫秒,去抖毫秒,去抖if(KEY0=0) /再次判断按键是否按下再次判断按键是否按下 while(KEY0=0); /等待按键释放等待按键释放Key_Number+; /键值加键值加1 /* 功功 能能: INT1中断函数,使键值减中断函数,使键值减1 */#pragma interrupt_handler Int1_isr:3void Int1_isr(void) delay_nms(20); /延时大约延时大
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- (正式版)DB65∕T 4223-2019 《库尔勒香梨简约化栽培技术规程》
- 市民之家招聘考试题及答案
- 2025年急救知识试题附答案
- E Have a try (Project)教学设计初中英语沪教版五四学制2024七年级上册-沪教版五四学制2024
- 信托制度创新与市场发展-洞察及研究
- 5.3 电磁感应教学设计-华东师大版八年级下册科学
- 生成艺术创新趋势-洞察及研究
- 玩 具(教学设计)-一年级上册数学北师大版2024
- 教学游戏化设计探索-洞察及研究
- “浙江大学2025年公共卫生(流行病学)试题及答案”
- 隧道施工应急预案方案
- 植物鉴赏课件
- 安徽省华师联盟2026届高三上学期9月开学质量检测物理试卷(含答案)
- 航海船舶航线选择指南
- 2025年中小学校长岗位竞聘面试题库及答案
- 2025年中国心血管病报告
- 肿瘤热疗中国专家共识
- 2025年甘肃省药品检查员资格考试(药械化流通)历年参考题库含答案详解(5套)
- 2025年泸州职业技术学院招聘考试笔试试卷【附答案】
- 自来水企业内部管理规范
- 2025新热处理工程师考试试卷及答案
评论
0/150
提交评论