ATmega64 中断向量

以下资料参考马潮老师的中文手册,由微雪电子整理并发布,转载请注明出处:www.waveshare.net,否则追究相应责任!

本节说明ATmega64的中断处理。更一般的AVR中断处理请参见 P13“复位与中断处理” 。

ATmega64 复位和中断向量
Notes:
1. 当熔丝位BOOTRST 被编程时,复位后程序跳转到Boot Loader。请参见 P268“ 支持引导装入程序 – 在写的同时可以读(RWW, Read-While-Write) 的自我编程能力” 。
2. 当寄存器MCUCR的IVSEL置位时,中断向量转移到Boot区的起始地址。此时各个中断向量的实际地址为表中地址与Boot 区起始地址之和。
3. 地址为$0030 - $0044 的中断在ATmega103 兼容模式中不存在。

Table 24给出了不同的BOOTRST/IVSEL设置下的复位和中断向量的位置。如果程序永远 不使能中断,中断向量就没有意义。用户可以在此直接写程序。同样,如果复位向量位于 应用区,而其他中断向量位于Boot 区,则复位向量之后可以直接写程序。反过来亦是如 此。

ATmega64 复位和中断向量位置的确定
Note: 1. Boot 区复位地址列于 P279Table 113。对于熔丝位BOOTRST,“1” 表示未编程, “0” 表示已编程。

ATmega64 典型的复位和中断设置如下:

ATmega64 典型的复位和中断设置

当熔丝位BOOTRST 未编程, Boot 区为8K 字节,且中断使能之前寄存器MCUCR 的 IVSEL 置位时,典型的复位和中断设置如下:

ATmega64 典型的复位和中断设置

当熔丝位BOOTRST 已编程,且Boot 区为8K 字节时,典型的复位和中断设置如下:

ATmega64 典型的复位和中断设置

当熔丝位BOOTRST 已编程, Boot 区为8K 字节时,且中断使能之前寄存器MCUCR 的 IVSEL 置位时,典型的复位和中断设置如下:

ATmega64 典型的复位和中断设置

在应用区和Boot 区之间移动中断

通用中断控制寄存器决定中断向量表的放置地址。

MCU 控制寄存器- MCUCR

ATmega64 MCU 控制寄存器- MCUCR

• Bit 1 – IVSEL: 中断向量选择
当IVSEL 为"0“ 时,中断向量位于Flash 存储器的起始地址;当IVSEL 为"1“ 时,中断向量转移到Boot 区的起始地址。实际的Boot 区起始地址由熔丝位BOOTSZ 确定。具体请参考 P268“ 支持引导装入程序 – 在写的同时可以读(RWW, Read-While-Write) 的自我编程能力” 。为了防止无意之间改变中断向量表,修改IVSEL 时需要遵照如下过程:
1. 置位中断向量修改使能位IVCE
在紧接的4 个时钟周期里将需要的数据写入IVSEL,同时对IVCE 写”0”
执行上述序列时中断自动被禁止。其实,在置位IVCE 时中断就被禁止了,并一直保持到 写IVSEL 操作之后的下一条语句。如果没有IVSEL 写操作,则中断在置位IVCE 之后的 4 个时钟周期保持禁止。状态寄存器的位I 不受此序列的影响。
Note:
若中断向量位于Boot区,且Boot锁定位BLB02被编程,则执行应用区的程序时中断被禁止 ;若中断向量位于应用区,且Boot 锁定位BLB12 被编程, 则执行Boot 区的程序时中断 被禁止。有关Boot 锁定位的细节请参见P268“ 支持引导装入程序 – 在写的同时可以读 (RWW, Read-While-Write) 的自我编程能力” 。

• Bit 0 – IVCE: 中断向量修改使能
改变IVSEL 时IVCE 必须置位。在IVCE 或IVSEL 写操作之后4 个时钟周期, IVCE 被硬件清零。如前面所述,置位IVCE 将禁止中断。代码如下:
汇编代码例程
Move_interrupts:
; 使能中断向量的修改
ldi r16, (1<<IVCE)
out MCUCR, r16
; 将中断向量转移到boot 区
ldi r16, (1<<IVSEL)
out MCUCR, r16
ret
C 代码例程
void Move_interrupts(void)
{
/* 使能中断向量的修改 */
MCUCR = (1<<IVCE);
/* 将中断向量转移到boot 区 */
MCUCR = (1<<IVSEL);
}
 相关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

ATmega64 中断向量

——