高准确度时钟程序算法.pdfVIP

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
高准确度时钟程序算法

高准确度时钟程序算法 作者:广州增城市电力局(511300 )黄沛芳 来源:《电子技术应用》 摘要:通过对引起实时时钟计时误差因数的分析,给出了一种提高实时时钟长期 计时准确度的实用而有效的软件方法。该方法具有成本低、易实现、通用性强、彻 底校正等优点。 关键词:实时时钟准确度定时器软件校正 电子计时器通常以石英晶振为时钟源。时钟源的频率通常为几十kHz 乃至几十MHz ,而 学用时钟的最小计单位一般在0.01s~1s。高频的时钟源脉冲通过分频器后产生基本定时脉 冲。电子计时器的计时部分就是对基本定时脉冲进行累加,产生秒、分、时等时间信息乃至 日、月、年等日期信息。 1 引起计时误差的因数 一个常规电子计时器的计时准确度,取决于晶振标称频率(fs )与实际频率(fo )的频率 偏差和晶振频率的时漂、温漂等离散参数。普通晶振的实际频率与标称频率有较大的偏差,可 达万分之五(万分之5 ),折算到一天计时误差就是43.2s 。一般室内气温变化在每天10℃左 右,对应晶振频率温漂10 -5 ,若以一段较长的时间取温漂的平均值则更小。因此电子计时器 的误差主要取决于晶振实际频率与标称频率的偏差。 2 减少计时误差的方法 2.1 纯硬件方法 对于纯硬件计时电路,因分频系数N 固定不变,要提高计时准确度只能调整fo,使得已 尽可能接近于fs 。常规减少计时误差的方法是:微调元件L 、C、R 的参数,调节硬件频率, 使得时钟源的频率误差减小。但此方法操作复杂,没有一定的电子技术知识和专用仪器很难校 准,而且会降低晶振频率稳定度。 2.2 纯软件方法 由微控制器控制的实时时钟,可以采用软件的方法消除晶振实际频率与标称频率间误差引 起的计时误差。 令晶振标频率为fs,而实际频率为fo,则fs=k×fo 。 若fs=fo 则k=1 ,否则k≠1。 TNS=Ns×(1/fs)=Ns×(1/k)×(1/fo),Ns 是在标称频率fs 下定时TNS 的分频系数。 由微控制器控制的实时时钟,可以用软件模拟,将1/k 归入总的计时程序中,从而消除fs 和fo 间偏差引来的计时误差。对于专用硬件时钟电路如:DS1320 、PCF8583 等,可以采用每 小时或每10 分钟读出时间,然后乘上1/k 再写回芯片的方法校正。对于采用可编程分频定时 器,由软件模拟时钟功能的软件实时时钟,则有更好的提高计时准确度的方法。因为定时器的 分频系数是可以动态改变的,如89C52 内置的16 位计数器,分频系数可以在 1~2 16 内任意 选取。令N=(1/k)Ns 作为分频系数写入计数器,这样每个基本计时周期TN=TNS,从而实现软 件校正定时周期。 在(1/k)×Ns 刚好为整数时,可以使得计时误差为0 。大部分的情况(1/k)×Ns 并不是整数, 若将四舍五入后的值作为Ns ,就会带来的量化误差,最大可达(1/2N),这是一个不容忽视 的问题。以12MHz 的89C52T2 定时器定时10ms 为例,每天最大量化误差累加是: 24×3600÷(2×10000)=4.32s 。若在片内RAM 中定义1 个字节发尾数,令它的满码值为1/N,则 最大量化误差就从原来的1/2N 下降到1/ (2×N×256 )。对应于上述的10ms 定时程序,其最大 量化误差的累加值由原来的4.32 秒/天减少到0.016875 秒/天,这是很大的改进。根据精度要 求,可以在片内RAM 中定义2 个字节,令它的满码值为1/N,这样最大量化误差就可降为1/ (2×N×65536 )。 减少量化误差的具体算法是:对于使用89C52 的T2 决定器,若标称为12MHz 的晶振实 际长期平均振荡频率fo=12.0006MHz,量化精度取1 字节,取TNS=10ms,则分频系数为: N0=fo/(12×TNS)=12.0006/(12×10 6×10 -2)=10000.5 令N=INT(N0)=10000 NT=INT[(N0-N)×256+0.5]=128 Ni 为第I 决定时值,可能是10000 或10001,这取决于Nti 的进位;Nti 为第I 次尾数暂存 值。 每次定时中断服务程序均执行(1)式,取得第I 次定时计数值,然后实时时钟增加 10ms,完成时钟功能。值得注意的是,Ni 是实际的计数值,至于实际写入特定定时器的数 值,则须根据具体定时器的递减、递加计时性质分别写入Ni 或Ni 的补码,同时定时器在溢出 到新的定时值装入并开始新定时周期这段

文档评论(0)

asd522513656 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档