打印

如何补救定时器的定时误差呢?

[复制链接]
2919|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
h_8816002|  楼主 | 2016-11-11 15:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,我的问题如下:
我的16位定时器参考的是其独有的一个时钟系统,根据系统时钟2分频得到的。现在系统时钟是45MHz,那么这个定时器时钟是22.5MHz,然后我的定时器预分频器可以进行1、2、4、8、16、32、64、128分频。
我现在采用的方式为:
定时器时钟:22.5MHz  定时器预分频系数4,则定时器时钟频率是5.625MHz。然后我设定初值终值分别为0x0000——0xffff,这样我的定时时间就是(65534*1/5625000)结果是个无限不循环的小数0.01165048888888888888889……
此时根据四舍六入的习惯,我保留2位小数是0.01,保留3位小数是0.012。此时我遇到的问题是,要进行长时间定时,比如执行for循环10000次,我保留了2位小数和保留了3位小数会有20秒的误差。无论怎么改定时器初值终值,总是会有无法整除的现象,出现这些误差,避免不了。
我现在的办法是改变for循环的循环次数进行补误差,可是循环次数越多,误差越放大,难道只能是每次都去故读小数点后一位计算误差,改变循环次数进行补救这一种方法吗?
各位谁有更好的办法,请教教我,谢谢!

相关帖子

沙发
ayb_ice| | 2016-11-11 15:24 | 只看该作者
累计误差达到某个整数的时候就改一次初值补偿回来

使用特权

评论回复
板凳
NE5532| | 2016-11-11 16:22 | 只看该作者
先要看你是不是真的在意这个“误差”,因为晶体自己就可能有100ppm量级的误差了。

所以你看需要“长时间”,“准确”计时的,比如RTC,会选适当的晶体频率,你也可以找一个方便定时的晶体频率来用。

使用特权

评论回复
地板
dirtwillfly| | 2016-11-11 16:58 | 只看该作者
可以软件校正

使用特权

评论回复
5
lxyppc| | 2016-11-11 17:00 | 只看该作者
为啥不把终值改成5625的倍数
为啥要用秒做你的计时单位
你可以自己新建一个时间单位,名字做k
1k=0.011....s
定时器溢出一次,记为1k,某表示时间的变量++,比如x
你要看时间的时候只要用x乘上k与s的换算系数0.011...即可
没有累积误差

使用特权

评论回复
评论
h_8816002 2016-11-12 09:31 回复TA
谢谢!您的方法真不错,我已经解决了误差过大的问题。 
whtwhtw 2016-11-11 17:28 回复TA
赞 
6
h_8816002|  楼主 | 2016-11-11 17:49 | 只看该作者
lxyppc 发表于 2016-11-11 17:00
为啥不把终值改成5625的倍数
为啥要用秒做你的计时单位
你可以自己新建一个时间单位,名字做k

有一个定时器初值终值是固定不变的,不能改。
这个设时间单位的方法真是让我耳目一新啊,谢谢!

使用特权

评论回复
7
robter| | 2016-11-12 08:42 | 只看该作者
观察一段时间,看积累误差是多少,然后软件修正

使用特权

评论回复
8
h_8816002|  楼主 | 2016-11-12 09:31 | 只看该作者
ayb_ice 发表于 2016-11-11 15:24
累计误差达到某个整数的时候就改一次初值补偿回来

谢谢您,我已经解决了问题。

使用特权

评论回复
9
h_8816002|  楼主 | 2016-11-12 09:33 | 只看该作者
NE5532 发表于 2016-11-11 16:22
先要看你是不是真的在意这个“误差”,因为晶体自己就可能有100ppm量级的误差了。

所以你看需要“长时间” ...

我定时器定时误差太大,已经成了错误不能算是误差了。我分析了定时器误差过大的问题,纯粹是因为学艺不精,方法不当造成的,已经解决了。谢谢您。

使用特权

评论回复
10
h_8816002|  楼主 | 2016-11-12 09:35 | 只看该作者

已经解决了谢谢!用lxyppc跟我讲解的新建时间单位的方式。

使用特权

评论回复
11
h_8816002|  楼主 | 2016-11-12 09:35 | 只看该作者
robter 发表于 2016-11-12 08:42
观察一段时间,看积累误差是多少,然后软件修正

我已经通过软件方法修正了,谢谢您。

使用特权

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

本版积分规则

22

主题

143

帖子

5

粉丝