[讨论] 如果在中断程序里头,放一个大延时,会出现什么情况?

舍我其谁   2010-8-27 15:54 楼主
来自EEWORLD合作群 群主:wangkj
比如,我的中断程序为1MS一次中断,我的中断程序里头呢,有个3MS的掩饰,这个时候,会发生什么情况?

回复评论 (18)

会影响中断的实效性
点赞  2010-8-27 16:04
你的意思,他先执行延时,然后在执行中断里头的1MS相应?
比如,我的中断是MS++ ++到6时,执行中断里头的程序 就是延时,我的延时为20MS
点赞  2010-8-27 16:04
你加了延时,这时你这个中断还没执行完,下一个中断又来了,那么会影响下一个中断的及时响应
我觉得会出现漏掉某些东西
点赞  2010-8-27 16:04
你的意思是,他先执行完了延时,然后才响应下一个MS++?
可是,我刚才又想了一下,中断是硬件中断的。也就是说他应该先响应MS++,然后才继续执行刚才没有执行完的程序啊
点赞  2010-8-27 16:04
在执行中断程序是 下一次中断来应该不会有中断反应?
点赞  2010-8-27 16:04
看具体的机制
点赞  2010-8-27 16:04
这部分程序,都在我的中断程序里头,并不是说这个延时是在主函数里头
点赞  2010-8-27 16:04
他应该先响应MS++,然后才继续执行刚才没有执行完的程序啊
除非有更高优先级中断出现
点赞  2010-8-27 16:04
如果没有清标志位,那下一个中断会被ignore
点赞  2010-8-27 16:04
平级的应该是顺序执行
点赞  2010-8-27 16:05
你的意思是,他先执行20MS的延时,然后才MS++?
点赞  2010-8-27 16:06
平级中断不会打断中断
点赞  2010-8-27 16:06
哦,我理解过来了,应该是先执行20MS的延时
点赞  2010-8-27 16:06

回复 楼主 舍我其谁 的帖子

看ISR里面有没有关中断了
点赞  2010-8-27 16:32
有必要再中断里加延时吗?不怕相冲突吗?
白天图生存,晚上谋发展!!!
点赞  2010-8-27 17:06

回复 14楼 舍我其谁 的帖子

你说的是外部中断?还是内部实时中断?内部实时中断,你设定的是1ms,他1ms肯定重新进中断,不管你有没有执行完上一次中断,既然你1ms执行不完,也就是说下次中断来时本次中断会转向新的中断。一直都不会执行之前的中断,虽然说嵌套了,当然有没有嵌套跟硬件还有关系。
外部中断也有很多种,进中断之后你是否屏蔽中断?要是进中断了你屏蔽了中断,那么中断执行外之前,该中断口不会响应下次中断。要是进中断后没有屏蔽该中断口的中断使能,则有外部中断则立刻执行当前中断。同上,你永远出不了这个中断嵌套。当然具体跟硬件的结构有关。
我感觉是这样的吧,对cpu具体怎么工作不是十分了解
点赞  2010-8-27 19:22
LZ翻翻书,看看你的中断的硬件流程是什么样的,再看看你的软件怎么做的,比如硬件上中断标志是不是自动清除,软件上,ISR中有没有关中断,还有,硬件上,中断能嵌套几层(硬件堆栈是很有限的哦)
点赞  2010-8-28 09:49

试一下就知道了吧

试一下不就知道了吗,不同的处理器可能会有不同的结果吧
我爱MCU
点赞  2010-8-28 12:55
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复