您的位置 首页 ADAS

AVR 中止优先级

AVR单片机在同一个优先级中,中断向量入口地址越低,其优先级越高。AVR单片机在响应中断以后,会禁止系统响应其余中断。如果程序需要在…

AVR单片机在同一个优先级中,中止向量进口地址越低,其优先级越高。AVR单片机在呼应中止今后,会制止体系呼应其他中止。假如程序需要在某个中止服务程序中呼应其它中止事情,能够在该中止服务程序顶用SEI指令或_SEI()(IAR)、 SEI()(ICCAVR)从头使能大局

中止即可。不然,AVR单片机只需在退出中止进程时,才从头使能大局中止。AVR(至少是ATmega16)单片机选用固定的硬件优先级方法,不支撑经过软件对中止优先级从头设定。

AVR有不同的中止源。每个中止和复位在程序空间都有独立的中止向量。一切的中止事情都有自己的使能位。当使能方位位,且状况寄存器的大局中止使能位I 也置位时,中止能够产生。依据程序计数器PC 的不同,在引导锁定位BLB02 或BLB12 被编程的情况下,中止或许被主动制止。这个特性提高了软件的安全性。详见 P247“ 存储器编程” 的描绘。

程序存储区的最低地址缺省为复位向量和中止向量。完好的向量列表请拜见 P43“中止”。列表也决议了不同中止的优先级。向量地点的地址越低,优先级越高。RESET 具有最高的优先级,第二个为INT0 – 外部中止请求0。经过置位MCU 操控寄存器 (MCUCR) 的IVSEL,中止向量能够移至引导Flash的开始处。编程熔丝位BOOTRST也能够将复位向量移至引导Flash的开始处。详细拜见P234“支撑引导装入程序 – 在写的一起能够读(RWW,Read-While-Write) 的自我编程才能”。

任一中止产生时大局中止使能位I 被清零,然后制止了一切其他的中止。用户软件能够在中止程序里置位I 来完结中止嵌套。此刻一切的中止都能够中止当时的中止服务程序。履行RETI 指令后I 主动置位。

从根本上说有两种类型的中止。第一种由事情触发并置位中止标志。关于这些中止,程序计数器跳转到实践的中止向量以履行中止处理程序,一起硬件将铲除相应的中止标志。中止标志也能够经过对其写”1” 的方法来铲除。当中止产生后,假如相应的中止使能位为“0”,则中止标志方位位,并一向坚持到中止履行,或许被软件铲除。相似的,假如大局中止标志被清零,则一切已产生的中止都不会被履行,直到I 置位。然后挂起的各个中止按中止优先级顺次履行。

第二种类型的中止则是只需中止条件满意,就会一向触发。这些中止不需要中止标志。若中止条件在中止使能之前就消失了,中止不会被触发。

AVR 退出中止后总是回到主程序并至少履行一条指令才能够去履行其他被挂起的中止。要注意的是,进入中止服务程序时状况寄存器不会主动保存,中止回来时也不会主动康复。这些作业必须由用户经过软件来完结。

运用CLI 指令来制止中止时,中止制止当即收效。没有中止能够在履行CLI 指令后产生,即便它是在履行CLI 指令的一起产生的。下面的比如阐明了如安在写EEPROM 时运用这个指令来防止中止产生以防止对EEPROM 内容的或许损坏

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

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

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

微信扫一扫关注我们

返回顶部