打印

“同一时刻有多个中断发生”请问啥叫“同一时刻”?

[复制链接]
2748|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xlsbz|  楼主 | 2009-12-1 08:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
“同一时刻有多个中断同时发生”————请问啥叫“同一时刻”么?
什么叫“同时”发生?如何通过程序模拟出出来?

一直很糊涂啊!!!:dizzy:

大家遇到过“同一时刻有多个中断同时发生”的情况么?

相关帖子

沙发
思考| | 2009-12-1 08:18 | 只看该作者
用仿真器仿真。

使用特权

评论回复
板凳
HWM| | 2009-12-1 08:21 | 只看该作者
“同一时刻”就是在CPU不能分辨的时间段内有多个中断申请出现,通常是在一个指令周期内(针对非流水线类型)。由于此类中断几乎同时到达,故CPU通常会在中断主优先级(用于嵌套)下定义子优先级(用于处理同时中断)。这有点象两个胖子同时要挤进一个门,CPU规定两个胖子中一个可以先进入(他们都处于同一个主优先级内)。当然,如果他们各自已经被设置在不同的主优先级的话,将由他们的主优先级确定其进入次序。

使用特权

评论回复
地板
xlsbz|  楼主 | 2009-12-1 08:35 | 只看该作者
用仿真器仿真。
思考 发表于 2009-12-1 08:18


你仿真过么?

使用特权

评论回复
5
huangqi412| | 2009-12-1 08:42 | 只看该作者
:lol  分辨不出先后就叫同时.

使用特权

评论回复
6
HWM| | 2009-12-1 08:48 | 只看该作者
由于同时出现中断的概率很底,所以此类情况一般不易仿真。

使用特权

评论回复
7
lxyppc| | 2009-12-1 09:09 | 只看该作者
更多的情况是“在中断中另一个中断到来”

使用特权

评论回复
8
xlsbz|  楼主 | 2009-12-1 09:11 | 只看该作者
用仿真器仿真我看是够呛!  晶振本身就不准!

只能用软件仿真!

使用特权

评论回复
9
HWM| | 2009-12-1 09:13 | 只看该作者
更多的情况是“在中断中另一个中断到来”
lxyppc 发表于 2009-12-1 09:09

在这种情况下,通常由主优先级(管嵌套)确定优先次序。若处在同一个主优先级(过更底)下只能等待。

使用特权

评论回复
10
zp2000| | 2009-12-1 09:26 | 只看该作者
3楼说的很好啊,同时就是说CPU认为是同时到达的,但是时间上不可能完全没有区别

使用特权

评论回复
11
arm_fan168| | 2009-12-1 09:28 | 只看该作者
以51为例吧,8051单片机在每个机器周期的S5P2阶段进行中断标志采样,如果一次中断标志采样中有两个或两个以上的中断标志置位了,那就表示“同一时刻有多个中断发生了”,所以这个同一时刻不是绝对的同一时刻。
硬件环境确实不容易模拟这种情况,不过用软仿真比较容易,在暂停时把两个外设的中断标志都置位,然后单步调试,你就能看到那个中断服务先被调用了(根据优先级)。

使用特权

评论回复
12
arm_fan168| | 2009-12-1 09:39 | 只看该作者
有一个办法应该可以在硬件环境中模拟“两个中断同时发生”,把51的INT0和INT1短接到一起,然后在INT0和INT1上制造一个边沿触发。不过我没有实验过,完全是空想,呵呵。

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
xlsbz + 1
13
84335262| | 2009-12-1 10:51 | 只看该作者
8# xlsbz
我看很好仿。你把单片机两个外部电平中断接一个开关上,一按就是同时发生了:$

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
xlsbz + 1
14
84335262| | 2009-12-1 10:52 | 只看该作者
晕倒,没注意看,抢了楼上的想法……:P

使用特权

评论回复
15
xlsbz|  楼主 | 2009-12-1 10:53 | 只看该作者
在main 里面
 
//PS = 1;//将串口设置为高优先级别   注销这句话和不注销看谁先响应!
RI = TRUE;
TF0 = TRUE; //定时器0溢出
EA = 1;



OK了!!

要注意程序要弄的简单点, 因为中断开始到响应是有延时的!
所以要保证两个中断的延时一样才可信!

使用特权

评论回复
16
HWM| | 2009-12-1 11:17 | 只看该作者
有一个办法应该可以在硬件环境中模拟“两个中断同时发生”,把51的INT0和INT1短接到一起,然后在INT0和INT1上制造一个边沿触发。不过我没有实验过,完全是空想,呵呵。 ...
arm_fan168 发表于 2009-12-1 09:39

呵,这个可以。

使用特权

评论回复
17
mbutterfly| | 2009-12-1 11:59 | 只看该作者
3L说的对

使用特权

评论回复
18
liuweixian168| | 2009-12-1 12:17 | 只看该作者
用软件更有效,硬件中会出现误差。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

190

主题

1614

帖子

4

粉丝