打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
【新提醒】【原创求精】破解单片机伪命题之(1)——精确定时
发表于 2010-6-6 19:47:44  


*注:此文专为21IC而著,可以转载,但需保留本说明,否则将可能导致版权追究

常见的错误观点:

1.我需要用单片机实现精确定时
2.通过各种技巧来修正或避免定时器中断误差的产生
3.用定时器可以获得比软件定时更高的定时精度

破题:

1.指标不明

    世界上没有绝对的精确,只有具体的需求。80年代,一块每天误差30秒的机械手表叫“精确”,90年代,一块每年误差10分钟的石英手表叫“精确”,现在的CDMA系统离开了GPS系统授时就会崩溃——没有定义的精确是没有意义的。要求精确的人自己都说不清楚需要精确到什么程度,所以这个讨论本身就是没有意义的。

解决方案:分析自己的具体系统需要多高的定时精度,给出指标。典型的现代RTC系统误差是10分钟/年。其实很少有应用需要高精度的时钟。

2.方向错误

[a]单片机的所有时间基准来源于主时钟,典型地,主时钟有片内RC振荡器和片外石英晶体。

RC振荡器的典型精度为5%,不可能精确。

石英晶体的输出频率与温度和负载电容(晶体旁边接到地的那两个电容)有很大关系,石英晶体的误差包括初始误差、温度漂移和年老化3种,初始误差是在规定的激励功率下,石英晶体配合厂家规定的负载电容(常见值为16pF)和室温下测定,市面普通晶体的初始误差约为20ppm;负载电容包括晶体的封装寄生电容、电路板上焊接的两个电容,电路板的寄生电容、单片机输入引脚的寄生电容组成,当这些电容的和与厂家的测定条件不同时,晶体的输出频率还将发生偏移(pull),漂移值约为十几到二十几ppm每pF;当温度偏移时,晶体的输出频率也将发生类似sin曲线的漂移,该漂移可达数十ppm;晶体每年另存在约5ppm的老化漂移,漂移方向不定。

【图片为晶体的温漂曲线】



综上:很多人在使用晶体时根本没有注意这些影响频率的因数,综合一般人的使用习惯,晶体的实际误差约在100-200ppm左右。

解决方案:不了解晶体精度的人,没有权利谈“精确定时”,对于确实需要足够精度晶体频率的应用,应与晶体供应厂家仔细核对设计指标,使用温补晶体,对负载电容使用NPO的第一类电介质电容完成,对晶体部分加屏蔽,严格电路板设计等方式保证足够的时钟源精度。

单片机基于程序运行,当其为多个中断源服务时,特别是当存在这非周期中断时(例如按键),中断服务时间就有可能延迟定时器中断的相应。然而这几乎是一个权衡,如果一个单片机只为定时服务,其会退化为一个ASIC而失去灵活性,这种情况下最佳的解决方案是使用功耗更低、功能更单一和更便宜的RTC芯片。

另一方面,任何振荡频率不能被2整除的晶体,用于秒定时时都会存在误差,若非其他应用条件的限制,应优先考虑使用32768的RTC晶体,软件修正属万不得已的方法,会导致软件复杂度增加。

解决方案:尽量使用32768的晶体作为“秒”相关应用的时钟源,使用该晶体直接驱动定时器,并且使用定时器的溢出自装载功能以减轻软件负担,减少其他中断影响所带来的定时偏差。

3.思路问题

上已述及,单片机的所有行为都是基于主时钟的,除非是带有预取指流水线的系统(例如NXP ARM中的MAM),程序的运行时间都是确定的,并且与定时器处于同一精度级别。由于中断需要现场保护和恢复,其时间对初学者较为复杂;当禁止中断时,软件演示反而更容易得到“高确定度”的延时。

解决方案:尽量减少中断源,让定时器处于高中断优先级,对于简单的局部短延时,使用软件延时完成,对有流水线加速的单片机,尽量使用定时器。

4.结论

综上所述,所有的争论来源于没有给出具体的指标和应用要求,需要多精确的时钟?有哪些资源可用?有哪些设计的限制条件需要考虑?在这些问题没有指明的情况下,讨论任何方案都是没有意义的,“精确定时”本身就是一个伪命题。

解决方案:没有通吃天下的方案,只有最适合当前系统的方案,任何方案都是在权衡利弊后作出的选择。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
单片机定时器/计数器主要有什么作用?
单片机测量频率的设计与实现
基于51单片机双极型PWM 的软件实现
单片机控制红外线防盗报警器
51单片机晶振与波特率的关系
晶振详细介绍及其知名研发、生产厂家
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服