理論上
只要是用晶振作為時(shí)基的單片機(jī)時(shí)間鐘,在常溫下做到日差1秒之內(nèi),甚至更精準(zhǔn)是應(yīng)該極易達(dá)成的。
只是許多人并不知道如何達(dá)成這個(gè)目標(biāo)的方案。
而且市面很多帶單片機(jī)的產(chǎn)品中,時(shí)間都做不準(zhǔn),這絕對(duì)是設(shè)計(jì)問題。例如:筆者車子上的時(shí)鐘日差有10秒多。
一般大多數(shù)人所設(shè)計(jì)的定時(shí)器時(shí)常,是根據(jù)晶振標(biāo)出的數(shù)據(jù)(如12M)計(jì)算而成的,固定不變,設(shè)計(jì)呆板。但普通晶振的實(shí)際振蕩頻率是不可能與標(biāo)出的數(shù)據(jù)完全相同的,例如:12.00043M,11.99985……,這個(gè)誤差必然積累,所以時(shí)鐘就不準(zhǔn)了。另外絕大多數(shù)設(shè)計(jì)也沒有考慮微調(diào)方案,對(duì)于日差幾秒無法控制。
日差1秒要求的精準(zhǔn)是:1秒/(24小時(shí)*60分*60秒),對(duì)應(yīng)12M晶振;當(dāng)頻率是12.000014M或11.999986M,日差就有1.2秒。可見用普通晶振做的時(shí)間鐘,如果不采取修正措施,會(huì)因精度不夠,時(shí)鐘日差10多秒是很普遍的。
在筆者設(shè)計(jì)的有單片機(jī)時(shí)間產(chǎn)品中,隨機(jī)取10個(gè),同時(shí)上電,3天后再看時(shí)鐘,它們之間的最大時(shí)間誤差,一般都不會(huì)超出1秒(普通晶振,不聯(lián)網(wǎng))。許多產(chǎn)品月差在1秒之內(nèi)。
1、實(shí)現(xiàn)方法:
1)將時(shí)間的定時(shí)中斷時(shí)常數(shù)做成可修正的,且加入微調(diào)常數(shù),定時(shí)時(shí)常數(shù)與微調(diào)時(shí)常數(shù)在FLASH中取得。微調(diào)時(shí)常數(shù)用于修正時(shí)常數(shù)的小數(shù)點(diǎn)之后的部分。
2)程序可以對(duì)某端口輸入的秒脈沖再進(jìn)行計(jì)算,并據(jù)之修正定時(shí)器的時(shí)常數(shù),以及微調(diào)常數(shù),并存入FLASH中。達(dá)成利用外部精準(zhǔn)脈沖源對(duì)時(shí)鐘進(jìn)行校準(zhǔn)的目的,說白了,就是用外校消除普通晶振的個(gè)體差異。同時(shí)程序也可以輸出自己的秒脈沖,這樣就可以達(dá)成產(chǎn)品之間的互校。
3)選擇一個(gè)產(chǎn)品,對(duì)其時(shí)鐘進(jìn)行精確校準(zhǔn)(這需要外部精準(zhǔn)的時(shí)鐘源。如果手中沒有,可以多花點(diǎn)時(shí)間,用手機(jī)、電視、廣播上的報(bào)時(shí)進(jìn)行校準(zhǔn)),這樣就可以將它做成一個(gè)自己的【標(biāo)準(zhǔn)秒脈沖時(shí)鐘源】。
4)產(chǎn)品出貨前,用自己的【標(biāo)準(zhǔn)秒脈沖時(shí)鐘源】校一下(將輸出的標(biāo)準(zhǔn)秒脈沖送入其它產(chǎn)品的校準(zhǔn)端口,讓其它產(chǎn)品自動(dòng)完成定時(shí)器時(shí)常數(shù)及微調(diào)常數(shù)的修正。)
如此處理,時(shí)間鐘的精度就取決于晶振的穩(wěn)定度,而不是精度。而晶振的穩(wěn)定度普遍可以達(dá)到PPM級(jí),當(dāng)環(huán)境溫度變化不大時(shí),極易保證《11.57PPM,這就達(dá)成了日差小于1秒的目的。
2、產(chǎn)品相關(guān)時(shí)間基準(zhǔn)的程序:
(只提方案,不提程序代碼)
1)將端口輸入的秒脈沖與本體的晶振頻率進(jìn)行比對(duì),計(jì)算出定時(shí)器的時(shí)常數(shù)與微調(diào)時(shí)常數(shù)(只做一次即可,計(jì)算結(jié)果保存到FLASH了,其最初值是按晶振的標(biāo)稱值計(jì)算確定的)。
2)時(shí)間微調(diào)補(bǔ)償。
3)秒脈沖輸出(用于互校,可以放棄不寫)。
要點(diǎn):定時(shí)器的時(shí)常數(shù)不是程序直接賦值,而是從FLASH中調(diào)取的。
編輯:lyn
-
單片機(jī)
+關(guān)注
關(guān)注
6067文章
44982瀏覽量
650311 -
晶振
+關(guān)注
關(guān)注
35文章
3262瀏覽量
70099
原文標(biāo)題:如何用單片機(jī)做一個(gè)高精度的時(shí)間鐘方案?
文章出處:【微信號(hào):gh_c472c2199c88,微信公眾號(hào):嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
時(shí)統(tǒng)設(shè)備高精度時(shí)間同步解決方案:為數(shù)字化時(shí)代注入精準(zhǔn)時(shí)間基因
一種高精度單斜率AD及其單片機(jī)實(shí)現(xiàn)
方案分享 | 高精度時(shí)間同步技術(shù)的實(shí)現(xiàn)與應(yīng)用

單片機(jī)和伺服有什么區(qū)別
用dac7742y做一個(gè)高精度的鋸齒波,無波形輸出是怎么回事?
康謀方案 | BEV感知技術(shù):多相機(jī)數(shù)據(jù)采集與高精度時(shí)間同步方案

基于單片機(jī)的磁致伸縮位移傳感器的應(yīng)用

基于51單片機(jī)的手動(dòng)數(shù)字時(shí)鐘

如何實(shí)現(xiàn)51單片機(jī)與PC機(jī)的串行通信
MS1022——高精度時(shí)間測(cè)量(TDC)電路

單片機(jī)&超聲波探傷儀
物聯(lián)網(wǎng)系統(tǒng)中高精度RTK定位方案的實(shí)現(xiàn)_高精度定位模塊

單片機(jī)方案開發(fā):如何給電子產(chǎn)品單片機(jī)選型?
藍(lán)牙模塊如何實(shí)現(xiàn)單片機(jī)和手機(jī)端數(shù)據(jù)互傳

評(píng)論