OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4487|回复: 11

定时器精度

[复制链接]

12

主题

25

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2017-3-25
在线时间
35 小时
发表于 2017-9-18 09:59:23 | 显示全部楼层 |阅读模式
22金钱
最近项目里碰到一个问题。情况是外部有一个波形输出的通道,把这个通道分成了4路,1路是主通道,其他三路是副通道,现在三个副通道上都有一个继电器,通过405来控制继电器开关来达到从主通道上截取波形的目的。继电器的开关时间是上位机发过来的,然后用405的定时器去控制,系统时钟用的是16M的HSI。现在有这样一个问题:定时器的精度不够,导致每次定时的时间都是一个有很小很小波动的时间,大概定时100ms能差0.3ms左右,这就到时随着时间推进,这个误差会不断累积导致副通道的波形就和主通道的波形差的很远。现在有一个方案就是,先根据大概这个误差时间在每一次波形截取时进行补偿,然后在一定周期后比如10个、20个周期后看时间差了多少,再进行一次补偿。目前来看效果并不理想。不知道大家有没有什么好的方法,求指教。另外,有个问题,我看到HSI的精度在1%,那这个精度是固定的么?就是说HSI的实际频率是固定的么,还是说每次起振都会有一定误差,只是误差在1%以内?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2017-9-19 00:30:23 | 显示全部楼层
你这估计不是定时器精度不行吧,你认为所有继电器的工作时间,就是一模一样?也太相信这种更简单机械结构的 精度了吧?
回复

使用道具 举报

3

主题

73

帖子

0

精华

初级会员

Rank: 2

积分
196
金钱
196
注册时间
2017-5-4
在线时间
21 小时
发表于 2017-9-19 10:26:12 | 显示全部楼层
外部晶振误差20ppm是 百万分 之20,时钟跑一天误差是
20*24*60*60 = 1728000 = 1.72s
内部晶振误差是 百分之 1也就是 百万分之10000,时钟跑一天误差是
10000*24*60*60 = 864000000 = 864s
回复

使用道具 举报

12

主题

25

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2017-3-25
在线时间
35 小时
 楼主| 发表于 2017-9-19 17:32:04 | 显示全部楼层
mill 发表于 2017-9-19 10:26
外部晶振误差20ppm是 百万分 之20,时钟跑一天误差是
20*24*60*60 = 1728000 = 1.72s
内部晶振误差是 百 ...

十分感谢。那晶振的误差是每次都是准确的1%还是误差是在0~1%这个范围呢?因为如果是固定的误差那我可以用软件补偿,如果不是固定的,那我就没法补偿了只能另外想办法了。我用示波器测了晶振频率,不是固定的,但是示波器本身也不是很精密,所以就比较无语了。
回复

使用道具 举报

12

主题

25

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2017-3-25
在线时间
35 小时
 楼主| 发表于 2017-9-19 17:35:26 | 显示全部楼层
正点原子 发表于 2017-9-19 00:30
你这估计不是定时器精度不行吧,你认为所有继电器的工作时间,就是一模一样?也太相信这种更简单机械结构的 ...

十分感谢。其实这个继电器工作时间我不太考虑,因为它不会累加,顶多在每一次波形截取时都会有个几毫秒的误差但并不会累计起来。我比较疑惑的是由于定时器的误差一直在累计,而且我没有什么太好的补偿方法,就导致了这个误差随着时间推进一直在增加,最后都没法看了。。。定时器的误差我是直接测的定时器控制继电器的信号线。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2017-9-20 00:27:37 | 显示全部楼层
一头鱼 发表于 2017-9-19 17:35
十分感谢。其实这个继电器工作时间我不太考虑,因为它不会累加,顶多在每一次波形截取时都会有个几毫秒的 ...

那你得加校时了,统一一个校准时钟源。
或者,你可以选精度更高的晶振。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

12

主题

25

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2017-3-25
在线时间
35 小时
 楼主| 发表于 2017-9-20 09:39:49 | 显示全部楼层
正点原子 发表于 2017-9-20 00:27
那你得加校时了,统一一个校准时钟源。
或者,你可以选精度更高的晶振。

嗯,我尝试一下,3Q3Q
回复

使用道具 举报

3

主题

73

帖子

0

精华

初级会员

Rank: 2

积分
196
金钱
196
注册时间
2017-5-4
在线时间
21 小时
发表于 2017-10-6 09:30:47 | 显示全部楼层
一头鱼 发表于 2017-9-19 17:32
十分感谢。那晶振的误差是每次都是准确的1%还是误差是在0~1%这个范围呢?因为如果是固定的误差那我可以用 ...

软件只是一个RC震荡,肯定不会是固定值啊,对时钟要求高的话,内部不要考虑了,肯定是使用外部时钟
回复

使用道具 举报

12

主题

25

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2017-3-25
在线时间
35 小时
 楼主| 发表于 2017-10-9 10:52:32 | 显示全部楼层
mill 发表于 2017-10-6 09:30
软件只是一个RC震荡,肯定不会是固定值啊,对时钟要求高的话,内部不要考虑了,肯定是使用外部时钟

3Q3Q,已经采用外部时钟了
回复

使用道具 举报

4

主题

197

帖子

0

精华

高级会员

Rank: 4

积分
977
金钱
977
注册时间
2017-3-11
在线时间
78 小时
发表于 2017-10-9 12:27:38 | 显示全部楼层
换成8M HSE 就OK 精度比HSI高得多
回复

使用道具 举报

5

主题

277

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1522
金钱
1522
注册时间
2014-5-16
在线时间
217 小时
发表于 2017-10-9 14:00:11 | 显示全部楼层
事实上就如@mill 算的,用外部晶振来做时钟源也不是很准,最好用额外的有源时钟芯片,通过读时钟芯片的时间和脉冲来计时,可达到比较高的精度.
如果不关心日历时间,那么用外部时钟芯片都不用对时,只需要使能脉冲输出就行,采集脉冲时不能只采集边沿,应该采集脉冲宽度,因为可能会有外部干扰产生的假脉冲.
回复

使用道具 举报

3

主题

73

帖子

0

精华

初级会员

Rank: 2

积分
196
金钱
196
注册时间
2017-5-4
在线时间
21 小时
发表于 2017-10-14 17:34:23 | 显示全部楼层
zmingwang 发表于 2017-10-9 14:00
事实上就如@mill 算的,用外部晶振来做时钟源也不是很准,最好用额外的有源时钟芯片,通过读时钟芯片的时间和 ...

专业
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-18 23:06

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表