huanghuac 发表于 2021-12-1 22:39

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

中断周期时间除了分频器和设置寄存器初始值以外,怎么计算定时器中断的实际时间

dengdc 发表于 2021-12-1 22:42

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

zhanghqi 发表于 2021-12-1 22:44


这样计算:
1.计算每条指令的时间,中颖MCU为4分频,指令为单周期,如振荡频率为4MHZ,则4分频后,实际的执行频率为1MHZ,则每条指令的时间为1微秒.
2.定时器预分频值假设为4,则每个定时器的计数时间为1*4=4微秒

zhanghqi 发表于 2021-12-1 22:47

3.设定定时器的初始值,即确定定时器的计数个数,如设置初值为56,则8位定时器的计数值为200,这时定时器的定时时间就为200*4=800微秒.

tian111 发表于 2021-12-1 22:51


定时器是重载的,所以中断周期就是你设置的定时器溢出值的时间

xxrs 发表于 2021-12-1 22:53

主程序里有些地方会关定时器中断,就是中断使能为0,所以定时器有中断标志产生时,不一定会马上执行中断

dengdc 发表于 2021-12-1 22:54

这样就造成定时器中断时间上的不连续性..这样的定时器中断时间怎样去计算

huanghuac 发表于 2021-12-1 22:56

什么思路?你举个例子

xxrs 发表于 2021-12-1 22:58

如果CPU正在处理TO中断,这时的任何中断都不会发生,这样等T0中断处理完后,才能处理T1中断

dengdc 发表于 2021-12-1 23:00

而T0中断子程序运行的时间或指令条数又不一定,所以T1的中断周期也成了不连续了.

jiahy 发表于 2021-12-1 23:01

没错,如果程序中有时关闭的中断使能位,此时如果中断产生,只会产生中断标志位

huanghuac 发表于 2021-12-1 23:04

按键是引出部分,所以就是异常高发部分。线路短路,按键阻值变大,接插件氧化等等都是可能的。

午夜粪车 发表于 2021-12-1 23:07

是的,时间理论上也没办法准确计算

huanghuac 发表于 2021-12-1 23:09

要考虑定时中断的准确性呢?

stly 发表于 2021-12-1 23:12

如果要考虑定时中断的准确性,可能考虑中断嵌套

renyaq 发表于 2021-12-1 23:14

就是在进入一个中断后,打开IE位,这样有新的中断进来时就会优先响应新的中断,执行完后,再回来执行现在的中断

songqian17 发表于 2021-12-1 23:16

说的没错,要特别注意防止堆栈溢出

huangchui 发表于 2021-12-1 23:18


如果中断关了,那肯定就不会再进中断了,也就不用管它的时间了

huanghuac 发表于 2021-12-1 23:20

哦,这么麻烦啊,算了

ynndmalh21 发表于 2021-12-2 14:58

可以使用示波器进行测试一下,就出来标准时间了
页: [1]
查看完整版本: 计算定时器中断的实际时间