历史上的今天
今天是:2024年11月03日(星期日)
2021年11月03日 | ATmega8 中断向量
2021-11-03 来源:eefocus
本节说明ATmega8的中断处理。更一般的AVR中断处理请参见P 12“复位与中断处理” 。

Notes:
1. 熔丝位BOOTRST被编程时,MCU复位后程序跳转到Boot Loader。
2. 当寄存器GICR的IVSEL置位时,中断向量转移到Boot区的起始地址。此时各个中断向量的实际地址为表中地址与Boot 区起始地址之和。
Table 19给出了不同的BOOTRST/IVSEL设置下的复位和中断向量的位置。如果程序永远 不使能中断,中断向量就没有意义。用户可以在此直接写程序。同样,如果复位向量位于 应用区,而其他中断向量位于Boot 区,则复位向量之后可以直接写程序。反过来亦是如此。

Note:
1. Boot 区复位地址列于P 207Table 82 。 对于熔丝位BOOTRST,“1” 表示未编程, “0” 表示已编程。
ATmega8 典型的复位和中断设置如下:

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

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

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

在应用区和Boot 区之间移动中断
通用中断控制寄存器决定中断向量表的放置地址。
通用中断控制寄存器- GICR

• Bit 1 – IVSEL: 中断向量选择
当IVSEL 为"0“ 时,中断向量位于Flash 存储器的起始地址;当IVSEL 为"1“ 时,中断向量转移到Boot 区的起始地址。实际的Boot 区起始地址由熔丝位BOOTSZ 确定。具体请参考P 196“ 支持引导装入程序 -在写的同时可以读(RWW, Read-While-Write) 的自我编程能力” 。 为了防止无意识地改变中断向量表,修改IVSEL 时需要遵照如下过程:
1. 置位中断向量修改使能位IVCE。
2. 在紧接的4 个时钟周期里将需要的数据写入IVSEL,同时对IVCE 写”0”。
执行上述序列时中断自动被禁止。其实,在置位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 将禁止中断。代码如下:
| 汇编代码例程 |
| Move_interrupts: ; 使能中断向量的修改 ldi r16, (1< ; 将中断向量转移到boot Flash 区 ldi r16, (1< ret |
| C 代码例程 |
| void Move_interrupts(void) { /* 使能中断向量的修改*/ GICR = (1< GICR = (1< |
上一篇:ATmega128 简介
下一篇:ATmega8 看门狗定时器
史海拾趣
|
【电子书】万用表测试电工电子元器件300例【PDG格式】 【电子书】万用表测试电工电子元器件300例【PDG格式】_ 【电子书】万用表测试电工电子元器件300例【PDG格式】_ 【电子书】万用表测试电工电子元器件300例【PDG格式】_ [ 本帖最后由 emily ...… 查看全部问答> |
|
1. 问题的提出 网络摄象机技术的发展,特别是宽带网络的普及,使得基于网络的网络监控应用正在普及。灵活的监视和控制配置、与信息网络紧密融合、长距离远程监控等优势都是传统监控所不可比拟的。如何 ...… 查看全部问答> |
|
各位大侠,在dxp 2004中有没有三排 15针串口(VGA)这个元件?如果有,那是在哪个库呢?而且还要有封装!我找了很久都没找到!如果有谁有这个元件库,可以给我吗?不胜感激!… 查看全部问答> |
|
我手头有一块2410的板子,可是和电脑不能连接。能不能帮我分析分析 系统里除了驱动只装了360安全卫士,其他软件安装顺序是:1、CE5.0 2、EVC 3、USB驱动(用USB线连接) 4、activesync 连接之后打开板子的电源,托盘里activesync的小标一直没有反 ...… 查看全部问答> |
|
那位兄弟有三星的NAND FLASH的驱动,我不要通用的啊,现代的我有,就是要改成三星的, 那位兄弟有三星的NAND FLASH的驱动,我不要通用的啊,现代的我有,就是要改成三星的, 有就发到我邮箱里啊?ricky5200@163.com 谢谢啊,… 查看全部问答> |
|
看来像手机... 在香港的Farnell网站可以下订单. 价钱港币718.9, 免运费. 比Primer1, 改良了不少. STM32F103E (512 Kbytes Flash) Li-Ion battery with smart loading& ...… 查看全部问答> |




