请问怎么计算定时器的中断周期

[复制链接]
3692|10
手机看帖
扫描二维码
随时随地手机跟帖
yxh668|  楼主 | 2007-12-17 08:49 | 显示全部楼层 |阅读模式
定时器中断周期时间除了分频器和设置寄存器初始值以外,怎么计算定时器中断的实际时间呀?IDE66有没有相关能把程序运行的时间相加起来?麻烦了,求救..
yxh668|  楼主 | 2007-12-17 09:16 | 显示全部楼层

程序里怎么去计算呀,各位大师,麻烦了,先谢谢啦..

使用特权

评论回复
warm_ice| | 2007-12-17 09:59 | 显示全部楼层

这样

定时中断的时间这样计算:
1.计算每条指令的时间,中颖MCU为4分频,指令为单周期,如振荡频率为4MHZ,则4分频后,实际的执行频率为1MHZ,则每条指令的时间为1微秒.
2.定时器预分频值假设为4,则每个定时器的计数时间为1*4=4微秒
3.设定定时器的初始值,即确定定时器的计数个数,如设置初值为56,则8位定时器的计数值为200,这时定时器的定时时间就为200*4=800微秒.

IDE66没有提供实时运行时间的功能.

使用特权

评论回复
yxh668|  楼主 | 2007-12-17 10:21 | 显示全部楼层

谢谢warm_ice,还有些不明白.

主程序里有些地方会关定时器中断,就是中断使能为0,所以定时器有中断标志产生时,不一定会马上执行中断,这样就造成定时器中断时间上的不连续性..这样的定时器中断时间怎样去计算,麻烦了.

使用特权

评论回复
yxh668|  楼主 | 2007-12-17 10:31 | 显示全部楼层

例如:

如:如果CPU正在处理TO中断,这时的任何中断都不会发生,这样等T0中断处理完后,才能处理T1中断,而T0中断子程序运行的时间或指令条数又不一定,所以T1的中断周期也成了不连续了.

使用特权

评论回复
warm_ice| | 2007-12-17 10:54 | 显示全部楼层

没错,如果程序中有时关闭的中断使能位,此时如果中断产生,只会产生中断标志位,不会响应中断,时间理论上也没办法准确计算.

如果要考虑定时中断的准确性,可能考虑中断嵌套,就是在进入一个中断后,打开IE位,这样有新的中断进来时就会优先响应新的中断,执行完后,再回来执行现在的中断,但要特别注意,防止堆栈溢出.

使用特权

评论回复
yxh668|  楼主 | 2007-12-17 11:05 | 显示全部楼层

谢谢,明白了.

不好意思,还想问一下----中颖有没有实际应用的教程和程序例子或者相关的培训活动,怎么取得?

使用特权

评论回复
warm_ice| | 2007-12-17 12:10 | 显示全部楼层

这里

https://bbs.21ic.com/club/bbs/list.asp?boardid=50&page=1&t=2621520&tp=%5B200707%u65B0%u7248%5D%u4E2D%u9896%u5355%u7247%u673A%u5165%u95E8%u4E0E%u5B9E%u6218

使用特权

评论回复
jsdk| | 2009-8-21 19:26 | 显示全部楼层
定时器的中断时间主要与你选择的晶振和你在定时器初始化中,设置的分频系数有关,每款单片机的内部分频值也不一样,中颖MCU为4分频

使用特权

评论回复
无冕之王| | 2009-9-2 14:58 | 显示全部楼层
不错,学习中。。。

使用特权

评论回复
秋天落叶| | 2009-9-3 21:14 | 显示全部楼层
如果中断关了,那肯定就不会再进中断了,也就不用管它的时间了

使用特权

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

本版积分规则

1

主题

8

帖子

1

粉丝