原创 中断响应时间

2008-12-16 14:52 4333 13 14 分类: 软件与OS

每个机器周期的S5P2时刻,INTx引脚的电平被锁存到内部寄存器中,待下一个周期查询。

  1,最短时间:中断请求有效,查询后在下一个周期便开始执行一条硬件的子程序的调用(时间是两个周期),然后开始执行服务程序的第一条指令。这样从锁存电平的周期到执行中断服务程序,中间相隔3个机器周期。


  2,最长时间:如果中断信号发生在前面所说的3种情况时,响应时间就要变长:


  第1种情况:响应时间取决于高级中断的执行时间;


  第2种情况:指当前CPU执行的指令是多周期指令,如乘除法指令(4个周期),最坏情况,还要等3个周期。这样响应周期变为3+3=6个周期;


  第3种情况:CPU当前执行的指令是RETI或访问IE、IP寄存器时,本指令(1个周期)没有响应,且下一条指令执行完后才能响应,这样附加的等待时间最长不会超过5个周期(1+4)。整个响应为5+3=8个周期。这样,如果不考虑第1种情况,整个中断响应的时间范围应当是: 3~8个机器周期。


  中断响应时间的不确定,在大多数场合下可能是无关紧要的,但是对于一些较特殊的场合下,这种响应时间的不确定往往会带来一些问题。


  如:利用中断来编制一个时钟程序时,便不可避免的带来误差,所以是要提醒大家注意。在程序中可以使用一些算法来减少这种误差(参考清华的资料) 。


  相对比较美国mircchip公司的PIC单片机由于使用单字节、单周期指令,使中断响应时间固定,所以从根本上消除了这种的情况。

文章评论1条评论)

登录后参与讨论

用户377235 2012-10-31 09:16

文章非常好。只是有一点还是不太明白,串口传输是怎样同步的?

用户149863 2009-4-25 08:46

顶3~8个机器周期,好慢啊~,呵呵

用户1271628 2008-11-7 05:15

你好,支持的写的文章,写的真的很不错!在这里想请教几个问题?第一:USB两根线怎么实现的双工LVDS?PCIE的双工不是还四根线的吗?第二:sata为什么不用两个双工的呢?那样不是更快吗?第三:可以具体说说地线是怎么消除静电伤害的吗?还有数据线不是带电吗?怎么消除数据线的伤害呢?第四:根据LVDS的原理不是抗干扰很强吗?为什么还要加地线抗干扰呢?
相关推荐阅读
用户461316 2009-08-17 17:57
Zigbee星型网络组网程序段
最近一直在做Zigbee的星型网络的组网试验,由于时间的原因,现在只是在最高的应用层上来编写程序。即协议栈的程序是2430的开发商(无限龙)编写的,我只是调用相应的函数来完成组网的,星型网络组网部分的...
用户461316 2009-08-17 17:14
VB6的标题栏使用上真彩色图标
模块 ModIcon.Bas 代码: Option Explicit Private Declare Function DrawIcon Lib "user32" (ByVal hdc As Long...
用户461316 2009-08-17 16:58
AppendToLog一个API方式存取日志文件的模块
'**************************************' 模块名称: AppendToLog' 功能描述:一个很不错的日志文件写入模块,不同于'     open/print/...
用户461316 2009-08-17 16:57
(VB自定义函数)去除字符串中的空格
'去除字符串中的空格(方法一)Public Function DelBlank(SearchString As String)   DelBlank = Replace(SearchString, C...
用户461316 2009-08-17 16:56
(VB自定义函数)对任意输入的汉字,可以得到它的拼音的第一个字母
调用方法:Command1.Caption = getHzPy("你")'//函数入口为汉字串,返回值为该汉字的第一个字母Public Function getHzPy(hzStr As String...
用户461316 2009-08-17 16:54
VB_代码执行速度测试
'**************************************'Windows API/Global Declarations for :[ '     A Simple] code ...
我要评论
1
13
关闭 站长推荐上一条 /2 下一条