您的位置 首页 元件

AVR中止详解

一、中断信号往往是电信号的某种变化形式,如脉冲的上升沿或下降沿高电平或低电平电平变化二、中断向量中断请求被cpu检测到之后,如果中断

一、中止信号往往是电信号的某种改动办法,如

脉冲的上升沿或下降沿
高电平或低电平
电平改动
二、中止向量
中止请求被cpu检测到之后,假如中止控制体系答应,cpu会主动搬运,履行一个固定的程序空间地址的指令。
这个固定地址叫做中止进口地址,也叫中止向量。而这个地址是有单片机的硬件来决议的。
一般这个地址不放置详细的程序,只放置一条跳转指令,转向真实的中止服务程序。
三、AVR不支持软件改动中止优先级,即其优先级是固定的。
四、中止源分为三类
1.非屏蔽中止,如reset中止,无法屏蔽
2.屏蔽中止,大部分中止都是可屏蔽的
3.软件中止,AVR不支持,如同ARM里边有,能够作为操作体系的中止调用。
五、中止呼应条件
呼应A中止 = 大局中止答应标志 AND 中止A答应标志 AND 中止A标志
大局中止答应标志关于AVR便是其标志寄存器SREG的I位,SREG.7,gcc中翻开和封闭的办法为sei()和cli()
中止答应标志,一般来说每个中止都会有独自的答应标志位,放置在某个相关的寄存器中,经过独自设置那一位能够翻开或封闭相应的中止。
中止标志,一般说来这个标志都是硬件触发的,便是一旦满意那个条件,这个标志主动为1,不需求手动设置。
六、中止向量区巨细 = 中止源个数 x 每个中止向量所占的字数
七、中止标志位一般会在cpu呼应中止后主动铲除,或在中止服务程序中经过读写专门的寄存器而主动铲除。
当然也能够对其进行软件铲除,铲除办法是对其写1(这点比较怪)
八、中止标志会一向坚持,假如中止被制止或者是cpu不能立刻呼应的话。这是称作“挂起”,一旦cpu能够呼应了,则立刻按优先级处理中止。
九、单个中止不带中止标志,比方装备为低电平触发的外部中止。只需满意条件就会向cpu一向发送中止请求。
这儿就会呈现这样的问题:
1.cpu暂时没呼应中止,低电平没有了,这样就少了一次服务
2.cpu呼应了,呼应完事,低电平还在,又多服务了一次
所以规划的时分要注意
一般这种低电平触发中止办法用于唤醒处于休眠形式的cpu,可参阅详细计划。
十、AVR呼应中止时会将大局中止答应位关掉,不呼应其它中止,所以也就不答应中止的嵌套。
当然能够在中止服务程序中,将其敞开,可是这样做是十分风险的,不发起。
十一、中止呼应的进程如下
1.清零大局中止
2.将详细被呼应的中止标志位清零
3.中止断点地址压入仓库,一起SP减2
4.主动将中止向量地址压入PC,强制履行。
以上均由硬件主动完结,软件需求做的工作如下:
1.中止进口处指令:rjmp reset
2.中止服务程序
3.回来指令 reti
十二、
十分要注意的是中止只保存和康复了断点的PC值,对其它的寄存器均没有维护,所以假如在中止服务程序中要是改动了某些寄存器的值的话就简单呈现问题。
所以,中止服务程序要尽量短,不做剩余的操作,而且一旦对sreg有损坏的话,一定要在先将其压入仓库。
十三、技巧
在使能一个中止答应位之前,最好将改中止的中止标志位铲除,然后立刻使能答应位。
这样能够防止一些不必要的过错,假如之前改标志为1的话,就会发生一个过错的中止。
再说一次,铲除标志位的办法是对其写1

GCC的中止程序写法,这儿不说了,参阅相关书本

AVR-MEGA16的外部中止
其它的cpu也迥然不同
中止办法的设置在MCUCR和MCUCSR两个寄存器里,找到对应的INT的两位ISC1和ISC0,详细参阅datasheet
中止答应在GICR寄存器里
中止标志位在GIFR寄存器中

书中由一个使用外部中止完成体系断电维护的电路实例,还不错,今后用到的时分能够找一下。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/yuanjian/258918.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部