以下资料参考马潮老师的中文手册,由微雪电子整理并发布,转载请注明出处:www.waveshare.net,否则追究相应责任!
本节说明ATmega8的中断处理。更一般的AVR中断处理请参见P 12“复位与中断处理” 。
Table 19给出了不同的BOOTRST/IVSEL设置下的复位和中断向量的位置。如果程序永远 不使能中断,中断向量就没有意义。用户可以在此直接写程序。同样,如果复位向量位于 应用区,而其他中断向量位于Boot 区,则复位向量之后可以直接写程序。反过来亦是如此。
ATmega8 典型的复位和中断设置如下: 当熔丝位BOOTRST 未编程,Boot 区为 2K 字节,且寄存器GICR 的IVSEL 置位时,典型的复位和中断设置如下: 当熔丝位BOOTRST 已编程,且Boot 区为 2K 字节时,典型的复位和中断设置如下: 当熔丝位BOOTRST 已编程,Boot 区为2K 字节,且寄存器GICR 的IVSEL 置位时,典型的复位和中断设置如下: 在应用区和Boot 区之间移动中断 通用中断控制寄存器决定中断向量表的放置地址。 通用中断控制寄存器- GICR • Bit 1 – IVSEL: 中断向量选择 执行上述序列时中断自动被禁止。其实,在置位IVCE 时中断就被禁止了,并一直保持到 写IVSEL 操作之后的下一条语句。如果没有IVSEL 写操作,则中断在置位IVCE 之后的 4 个时钟周期保持禁止。需要注意的是,虽然中断被自动禁止,但状态寄存器的位I 的值并 不受此操作的影响。 注意:若中断向量位于Boot 区,且Boot 锁定位BLB02 被编程,则执行应用区的程序时中断被禁 止;若中断向量位于应用区,且Boot 锁定位BLB12 被编程, 则执行Boot 区的程序时中断被禁止。 有关Boot锁定位的细节请参见P 196“支持引导装入程序 -在写的同时可以读(RWW, Read- While-Write) 的自我编程能力” 。 • Bit 0 – IVCE: 中断向量修改使能改变IVSEL 时IVCE 必须置位。在IVCE 或IVSEL 写操作之后4 个时钟周期, IVCE 被硬件清零。如前面所述,置位IVCE 将禁止中断。代码如下:
|
相关AVR资料说明 |
可作为如下AVR的参考资料: ATtiny13 ATtiny24 ATtiny44 ATtiny84 ATtiny2313 ATtiny26 ATmega48 ATmega88 ATmega168 ATmega8 ATmega16 ATmega32 ATmega64 ATmega128 ATmega162 ATmega169 ATmega169P ATmega8515 ATmega8535
相关AVR型号资料 |
ATtiny13 | ATtiny24 | ATtiny44 | ATtiny84 | ATtiny26 | ATtiny2313 |
ATmega48 | ATmega88 | ATmega168 | ATmega8 | ATmega16 | ATmega32 |
ATmega64 | ATmega128 | ATmega162 | ATmega169 | ATmega8515 | ATmega8535 |
ATmega8 中断向量
——