历史上的今天

今天是:2024年11月08日(星期五)

正在发生

2021年11月08日 | ATmega128 中断向量

发布者:cannon928 来源: eefocus关键字:ATmega128  中断向量  复位  中断处理 手机看文章 扫描二维码
随时随地手机看文章

本节说明ATmega128 的中断处理。更一般的AVR 中断处理请参见 P 12“ 复位和中断处理” 。

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


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

ATmega128 复位和中断向量位置的确定
Note: Boot 区复位地址列P 266Table 112 。对于熔丝位BOOTRST,“1” 表示未编程, “0” 表示已编程。

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

ATmega128 典型的复位和中断设置

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

ATmega128 典型的复位和中断设置

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

ATmega128 典型的复位和中断设置

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

ATmega128 典型的复位和中断设置

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

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

MCU 控制寄存器- MCUCR

ATmega128 MCU 控制寄存器- MCUCR

• Bit 1 – IVSEL: 中断向量选择
当IVSEL 为"0“ 时,中断向量位于Flash 存储器的起始地址;当IVSEL 为"1“ 时,中断向量转移到Boot 区的起始地址。实际的Boot 区起始地址由熔丝位BOOTSZ 确定。具体请参考P 255“ 支持引导装入程序 – 在写的同时可以读(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 锁定位的细节请参见 P 255“ 支持引导装入程序 – 在写的同时可以读(RWW, Read-While-Write) 的自我编程能力” 。


• Bit 0 – IVCE: 中断向量修改使能
改变IVSEL 时IVCE 必须置位。在IVCE 或IVSEL 写操作之后4 个时钟周期, IVCE 被硬件清零。如前面所述,置位IVCE 将禁止中断。代码如下:

汇编代码例程
Move_interrupts:
; 使能中断向量的修改
ldi r16, (1<out MCUCR, r16
; 将中断向量转移到boot 区
ldi r16, (1<out MCUCR, r16
ret
C 代码例程
void Move_interrupts(void)
{
/* 使能中断向量的修改 */
MCUCR = (1</* 将中断向量转移到boot 区 */
MCUCR = (1<}


关键字:ATmega128  中断向量  复位  中断处理 引用地址:ATmega128 中断向量

上一篇:ATmega128 看门狗定时器
下一篇:ATmega128 基准电压使能信号和启动时间

推荐阅读

在汽车产业大变革之际,与其等待时代点拨我们,不如自己去创造未来。眼下,汽车行业正站在自其诞生一百多年以来,所面临的最重要的转型十字路:一方面,是环境、社会和人口带来的现实压力迫使传统的汽车行业向更加环保、人性化的方向发展;另外一方面,是智能网联和人工智能技术的飞速发展,推动着汽车向智能化、深度化和多元化的方向前进。基于此,每个“...
2019年11月4-5日,大象机器人以合作伙伴的身份闪耀登陆华为在法国巴黎召开的第四届欧洲生态大会HUAWEI ECO-CONNECT EUROPE 2019(HCE)。携手华为WiFi6及5G技术,Elephant Robotics&reg;P系列机器人现场实操作业,吸睛无数,成为本次大会的一大亮点。Elephant RoboticsP3双臂合作,展现WiFi6互联优势华为欧洲生态大会是华为在欧洲举办的年度旗舰活动...
11月7日消息,华为EMUI官方微博近日公布了一个好消息,那就是华为P40、P40 Pro、P40 Pro+、Mate30、Mate30 Pro、Mate30 5G、Mate30 Pro 5G、Mate30 RS保时捷设计在内的八款机型首批开启EMUI11正式版升级。图片来源:微博至于如何参与EMUI11正式版升级,华为EMUI官方微博称手持以上八款产品的用户可在手机上打开【服务】APP—服务—升级尝鲜。据了解...
近日,据广东监管局披露,佛山市青松科技股份有限公司(以下简称:佛山青松)已于2021年11月04日在广东证监局办理了辅导备案登记,上市辅导机构为中信建投证券。官网显示,佛山青松成立于2000年,是一家专业从事LED显示、LED绿色照明、LED交通系列产品等领域的研发、生产、销售和售后服务的国家高新技术企业。在智慧交通信号产品上,佛山青松利用“互联网+...

史海拾趣

问答坊 | AI 解惑

请教关于EBOOT、SDRAM、FLASH

各位高手: 小弟问题如下:    1、在EBOOT.BIB中定义了这样一段:      MEMORY ;   Name     Start     Size      Type ;    ...…

查看全部问答∨

WINCE6.0+VS2005 如何导出 EVC可用的SDK?

如题, WINCE6.0+VS2005  如何导出 for EVC 的SDK, 我到处发现安装只能是VS2005和VS2008 可用, evc看不到这个sdk选项, 而PB5.0 导出的SDK, evc可用。…

查看全部问答∨

stc单片机扩展RAM问题——急!

本人使用STC12LE5A60S2单片机,本身有60K的ROM和1280的RAM,但是由于我做的是个通信处理软件所以涉及到的中间变量特别多,所以超出了1280的RAM不得不扩展RAM,但是最近新做好的板子到手后发现一个问题,在设置AUXR.1(也即使EXTRAM)为0不屏蔽内部扩 ...…

查看全部问答∨

高手帮忙,内核定制问题

我想请问下如果把定制的映像下载到SDRAM里,掉电会丢失,重启后会回到原来的没下载之前的系统吗?请路过高手帮帮忙。。谢谢 …

查看全部问答∨

我的流驱动啊,老是出问题。DLL_THREAD_DETACH

我的串口总是提示DLL_THREAD_DETACH如下: MID = 0xec, DID = 0x76 4th Cycle : 0xa5 NUMBLOCKS : 512(0x200), SECTORSPERBLOCK = 256(0x100), BYTESPERSECTOR = 512(0x200) STRINGS: **********DLL_PROCESS_ATTACH STRFMD_OEMIoControl: unre ...…

查看全部问答∨

CE下面gdi的上限是多少

CE下面gdi的上限是多少…

查看全部问答∨

【你问我答】发了一笔2-3K的横财,只充许买一样东东,雕刻机或者3D打印机,二先一...

【你问我答】发了一笔2-3K的横财,只充许买一样东东,雕刻机或者3D打印机,二先一,你选哪?…

查看全部问答∨

让低价的USB串口转换器也能支持Arduino mini pro

本帖最后由 dcexpert 于 2015-1-16 22:35 编辑 Arduino有很多版本,其中一种比较小巧方便的是Arduino mini pro。它和Arduino Uno不同,板上没有自带USB转串口芯片,需要通过一个USB串口转换器才能下载,而且还需要是带DTR输出的型号,因为Arduino ...…

查看全部问答∨

CCS memory browser的问题继续研究

接我的上一个问题讨论。 传送门:使用CCS memory browser的问题 我现在尝试使用内存指针直接读取内存地址,方式如下。 // The folloing pointers to function calls are: //Slope of temperature sensor (deg. C / ADC code).  Stored ...…

查看全部问答∨

stm32f10x库文件的学习

—————————————————————————————————————————————————————————————————————————— system_stm32f10x.c 文件 ——————————————————————————— ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved