1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
AVR的中断源较多,尤其是AT-mega128,一共有35个外部及内部中断源。通常。Flash程序存储器空间的最低位置(0×0000~0×0045)定义为复位和中断向量空间。在中断向量表中,处于低地址的中断向量所对应的中断拥有高优先级。所以,系统复位RESET优先级最高。
|
|
相关推荐
3个回答
|
|
一、中断设计注意事项
1.具备Bootloader功能的AVR。其中断向量区可以在Flash程序存储器空间最低位置和Bootloader区的头部来回迁移,这主要用于配合Bootloadel程序的应用。如果不使用Bootloadel-功能。 一般不使用中断向量区迁移。 2.Flash较小的AVR芯片。其一个中断向量占据1个字的空间。用于放置一条相对转移RJMP指令(范围-2k~+2k字),跳到中断服务程序。对于不使用的中断。在中断向量区中应放置1条中断返回指令RETI。以增强程序的抗干扰性。 3.ATmega128的Flash空间为64k字节,因此它的一个中断向量占据2个字的空间。用于放置一条绝对转移JMP指令(指令长度为2个字)。跳到中断服务程序。对于不使用的中断。 在中断向量区中应连续放置2条中断返回指令RETI,以增强程序的抗干扰性。当使用汇编语言编写系统程序时应注意。 4.当MCU响应一个中断时.其硬件系统会自动将中断返回地址压入系统堆栈。并关闭全局中断响应(硬件将中断标志I位清0).清除该中断的中断标志位;执行中断返回指令RETI时,硬件会先允许全局中断响应(硬件将中断标志I位置1),然后从系统堆栈中弹出返回地址到程序计数器PC中,继续执行被中断的程序。除此之外,MCU的硬件没有对中断保护做其他处理。 5.在编写中断服务程序时。首先要编写中断现场保护程序。如保护MCU的状态寄存器等。在中断返回之前,不要忘记恢复中断现场。 6.如果设置和允许外部中断响应。 即使是外部INT0~INT7引脚设置为输出。在引脚上的电平变化也会触发外部中断发生。这一特性提供了使用软件产生中断的途径。 7.外部中断可选择采用上升沿触发、下降沿触发、电平变化(由高变低或由低变高)和低电平触发等方式,无外部高电平触发方式。具体触发方式由外部中断控制寄存器EICRA(INT3:0)和EICRB(INT7:4)决定。 8.选择外部低电平方式触发中断时应注意:(1)引脚上的低电平必须一直保持到当前一条指令执行完成后才能触发中断。(2)低电平中断并不置位中断标志位。即外部低电平中断的触发不是由于中断标志位引起的,而是外部引脚上电平取反后直接触发中断(需要开放全局中断允许)。因此,在使用低电平触发方式时,中断请求将一直保持到引脚上的低电平消失为止。即只要中断引脚的输入引脚保持低电平,则将一直触发产生中断。所以,在低电平中断服务程序中,应有相应的操作命令,控制外部器件释放或取消加在外部引脚上的低电平。 |
|
|
|
二、中断优先及中断嵌套处理1.AVR中断的优先级由该中断向量在中断向量区中的位置确定,处于低地址的中断向量所对应的中断拥有高优先级。所以。系统复位RESET拥有最高优先级。
2.当两个中断源同时申请中断时。 MCU先响应中断优先级高的中断。低优先级的中断一般将保持中断标志位的状态(外部低电平中断除外),等待MCU响应处理。 3.MCU响应一个中断后,在进入中断服务前已由硬件自动清零全局中断允许位。此时。即使有更高优先级的中断请求,MCU也不会响应。要等执行到RETI指令,从本次中断返回,并执行了一条指令后。才能继续响应中断。所以,在缺省情况下,AVR的中断不能嵌套。AVR中断的优先级只是在有多个中断同时发生时才起作用。此时,MCU将首先响应高优先级的中断。 4.AVR中断嵌套处理是通过软件方式实现的。如果在B中断服务中,需要MCU能及时响应A中断(不是等本次中断返回后再响应),B中断的服务程序应这样设计: (1)B中断的现场保护;(2)屏蔽除A以外的其它中断允许标志;(3)用指令SEI开放允许全局中断;(4)B中断服务;(5)用指令CLI禁止全局中断;(6)恢复在本中断程序被屏蔽的中断允许标志;(7)B中断现场恢复;(8)B中断返回。 5.采用软件方式实现中断嵌套处理的优点。是让程序员可以根据不同的实际情况和需要来决定中断的重要性。 有更加灵活的手段处理中断响应和中断嵌套,如让低优先级的中断(此时很重要)打断高优先级中断的服务等。 但同时也增加了编写中断服务程序的复杂性。 6.由于AVR的指令执行速度比较高,因此。在一般情况下。不建议使用中断嵌套的处理方法。当然,这还需要用户在编写中断处理服务程序中。 应遵循中断服务程序要尽量短的原则。 |
|
|
|
三、高级语言环境中。中断服务程序的编写1.在高级语言开发环境中,都扩展和提供了相应编写中断服务程序的方法及模块。但不同的高级语言开发环境中对编写中断服务程序的语法规则和处理方法是不同的。
在编写中断服务程序前。应当对所使用开发平台、中断程序的编写方法、中断的处理方法等有较好的了解。 2.使用ICCAVR、CVAVR、BASCOM-AVR等高级语言编写中断服务程序时。通常不必考虑对中断现场保护和恢复的处理。因为编译器在编译中断服务程序的源代码时,会在生成的目标代码中自动加入相应的中断现场保护和恢复指令。 3.如果用户要编写效率更高或特殊的中断服务程序。可以采用嵌入汇编、关闭编译系统的自动产生中断现场保护和恢复代码等措施。但这需要对所使用的开发环境有更深的了解和掌握。 并具备较高的软件设计能力。 |
|
|
|
只有小组成员才能发言,加入小组>>
1932个成员聚集在这个小组
加入小组我的项目我做主,使用GN+Ninja来完成构建系统(VSCode开发RT106X)
36419 浏览 0 评论
NXP IMX8应用处理器快速入门必备:技巧、使用、设计指南
4849 浏览 1 评论
6106 浏览 1 评论
6816 浏览 0 评论
NXP i.MX6UL开发板(linux系统烧录+规格+硬件+模块移植)使用手册
4247 浏览 0 评论
642浏览 2评论
求助,S32G上Core M启动后如何让Core A在Flash指定位置加载uboot?
639浏览 2评论
ESP32-WROVER-IE + LAN8720以太网,GPIO0电压只有1.6v,无法正常进入spi flash boot模式如何解决?
640浏览 2评论
求分享适用于PN7160 Android的NFC工厂测试应用程序
727浏览 2评论
842浏览 2评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 13:11 , Processed in 1.285676 second(s), Total 87, Slave 68 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号