在看《时间触发嵌入式系统设计模式》说中断事件会丢失.

2020-01-18 18:43发布

本帖最后由 yxm433 于 2014-7-17 11:12 编辑

最近在看《时间触发嵌入式系统设计模式》这书,里面推荐用“基于时间触发”的设计模式,在谈到“基于事件触发”模式时,说当多个中断同时到来时,会出现漏掉处理中断的情况,

理解不了 ,会在当2个中断同时发生的时候,会漏掉处理一个中断吗?

此书是基于8051的。
原文大概是这样的:

为了理解为什么当两个中断同时产生时会出现问题,先看一下这种情况下8051体系结构的工作过程。与许多微控制器相似,最初的8051体系结构支持两种不同的中断优先级:低优先级和高优先级。如果两个中断(称做中断1和中断2)迅速地连续发生,系统将做如下处理:
1、如果中断1是一个低优先级,而中断2是高优先级
    低优先级中断激活的中断服务程序可以被高优先级中断打断。在这种情况下,为了让高优先级ISR执行,低优先级ISR将暂停。在大多数情况下,系统将正确运行。
2、如果中断1是一个低优先级,而中断2是低优先级
     由低优先级中断激活的ISR不能被另一个低优先级中断打断。于是,对第二个中断的响应将被延迟;在一些情况下将被完全忽略。
3、高、低
情况类似
4、高、高
情况类似

注意:当心,这意味着什么!嵌入式系统的开发人员普遍有一种错误观念,即中断事件绝不会被丢失。这完全不正确。如果多个中断源可能在“随机的”时间间隔产生中断,即中断响应可能被遗漏。实际上,在同时有几个有效的中断源的情况下,几乎不可能创建程序代码来正确地处理所有可能的中断组合。



大家有什么看法
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
yxm433
1楼-- · 2020-01-19 07:12
本帖最后由 yxm433 于 2014-7-20 23:03 编辑
craigtao 发表于 2014-7-18 17:35
该书上讲怎么避免的?


书还没看完,到目前,看书推荐的用法是:“只用一个中断源,就是Timer的中断”,就用时间轮询,没有外部事件的中断
yxm433
2楼-- · 2020-01-19 11:35
summarize 发表于 2014-7-20 02:00
LZ字体搞那么大是找封号的节奏么

我下次弄正常点
颜靖峰
3楼-- · 2020-01-19 14:30
看优先级别来判断
craigtao
4楼-- · 2020-01-19 20:00
yxm433 发表于 2014-7-20 23:02
书还没看完,到目前,看书推荐的用法是:“只用一个中断源,就是Timer的中断”,就用时间轮询,没有外部 ...

恩,这个方法挺好的,我也下载了这本书,但是还没时间来得及看,
klxx68
5楼-- · 2020-01-20 01:32
 精彩回答 2  元偷偷看……
mandylion2008
6楼-- · 2020-01-20 06:57
N年前看过,基于中断的设计,思路跟通常的写法很不一样,很容易头晕。
看了前言,一说什么导弹,医疗的都会使用,觉得很牛逼,其实也只是若干嵌入式架构的一种,看情况使用就行。

一周热门 更多>