计算定时器中断的实际时间

[复制链接]
9465|22
 楼主| 栩栩如生 发表于 2011-5-5 14:59 | 显示全部楼层 |阅读模式
中断周期时间除了分频器和设置寄存器初始值以外,怎么计算定时器中断的实际时间,IDE66有没有相关能把程序运行的时间相加起来
zwll 发表于 2011-5-5 15:08 | 显示全部楼层
IDE66没有提供实时运行时间的功能
llljh 发表于 2011-5-5 15:18 | 显示全部楼层
这样计算:
1.计算每条指令的时间,中颖MCU为4分频,指令为单周期,如振荡频率为4MHZ,则4分频后,实际的执行频率为1MHZ,则每条指令的时间为1微秒.
2.定时器预分频值假设为4,则每个定时器的计数时间为1*4=4微秒
llljh 发表于 2011-5-5 15:31 | 显示全部楼层
3.设定定时器的初始值,即确定定时器的计数个数,如设置初值为56,则8位定时器的计数值为200,这时定时器的定时时间就为200*4=800微秒.
chuxh 发表于 2011-5-5 15:40 | 显示全部楼层
定时器是重载的,所以中断周期就是你设置的定时器溢出值的时间
supernan 发表于 2011-5-5 15:50 | 显示全部楼层
主程序里有些地方会关定时器中断,就是中断使能为0,所以定时器有中断标志产生时,不一定会马上执行中断
llljh 发表于 2011-5-5 15:58 | 显示全部楼层
这样就造成定时器中断时间上的不连续性..这样的定时器中断时间怎样去计算
 楼主| 栩栩如生 发表于 2011-5-5 16:10 | 显示全部楼层
什么思路?你举个例子
supernan 发表于 2011-5-5 16:20 | 显示全部楼层
如果CPU正在处理TO中断,这时的任何中断都不会发生,这样等T0中断处理完后,才能处理T1中断
supernan 发表于 2011-5-5 16:28 | 显示全部楼层
而T0中断子程序运行的时间或指令条数又不一定,所以T1的中断周期也成了不连续了.
llljh 发表于 2011-5-5 16:39 | 显示全部楼层
没错,如果程序中有时关闭的中断使能位,此时如果中断产生,只会产生中断标志位
 楼主| 栩栩如生 发表于 2011-5-5 16:51 | 显示全部楼层
哦,那就不会响应中断
dingy 发表于 2011-5-5 17:13 | 显示全部楼层
是的,时间理论上也没办法准确计算
 楼主| 栩栩如生 发表于 2011-5-5 17:21 | 显示全部楼层
要考虑定时中断的准确性呢?
dingy 发表于 2011-5-5 17:28 | 显示全部楼层
如果要考虑定时中断的准确性,可能考虑中断嵌套
pengf 发表于 2011-5-5 17:55 | 显示全部楼层
就是在进入一个中断后,打开IE位,这样有新的中断进来时就会优先响应新的中断,执行完后,再回来执行现在的中断
123833789 发表于 2011-5-5 23:40 | 显示全部楼层
太准也不太可能,看实际应用允许的误差了,如果没必要就不用太精确,因为精确的话多晶振要求很高,好晶振是很贵的
HHuihong123 发表于 2011-5-6 08:47 | 显示全部楼层
我也想知道......
gao335 发表于 2011-5-6 09:11 | 显示全部楼层
不知道
liu_hl 发表于 2011-5-6 09:34 | 显示全部楼层
太准也不太可能,看实际应用允许的误差了。我做过跟踪调试,有时程序执行到中断中时已经又过去了十几个时钟周期,要求高的话计算设置值时要考虑这段时间
您需要登录后才可以回帖 登录 | 注册

本版积分规则

310

主题

2657

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部