huguang0218 发表于 2010-8-27 09:58:26

请问如何解决AVR中断冲突的问题

熟悉AVR的人都知道,AVR的中断硬件不能嵌套,如果同时多个中断同时触发,优先执行高中断优先级。那么很有可能掉了低优先级中断。请问大家在用AVR设计产品,用到多个中断时是如何避免这个问题的!

Gorgon_Meducer 发表于 2010-8-27 10:07:22

1、请准确定义,什么叫做“AVR的中断硬件不能嵌套”
   ——AVR中断处理程序中写入“asm("sei");”就可以开启嵌套
2、同时多个中断触发,高优先级执行,但是“很有可能掉了低优先级中断”需要明确的情况定义——你觉得你遇到的什么情况会导致这种状态?不能想当然。如果低优先级中断重复发生的频率不是很高,也不会丢。
3、解决方法A:治标不治本——加大堆栈,中断开嵌套。
   解决方法B:搞清楚为什么要嵌套,避免不必要的嵌套,修改系统设计和代码结构,有效控制嵌套深度。

huguang0218 发表于 2011-1-14 17:38:14

回复【1楼】Gorgon Meducer 傻孩子
-----------------------------------------------------------------------

M16的片子,要到的中断有外部中断0,外部中断1,串口接收与发送中断,定时器中断2,项目基本完工了,好算稳定!谢谢你的关注!!!

dfchen 发表于 2012-10-30 20:05:40

为什么用这么多中断呢?都中断了,主程序跑啥呢?还有为什么不用马潮老师的状态机呢?
页: [1]
查看完整版本: 请问如何解决AVR中断冲突的问题