關(guān) 閉

新聞中心

EEPW首頁(yè) > 工控自動(dòng)化 > 設(shè)計(jì)應(yīng)用 > 可提高實(shí)時(shí)時(shí)鐘長(zhǎng)期計(jì)時(shí)準(zhǔn)確度時(shí)鐘程序算法

可提高實(shí)時(shí)時(shí)鐘長(zhǎng)期計(jì)時(shí)準(zhǔn)確度時(shí)鐘程序算法

作者: 時(shí)間:2016-12-22 來(lái)源:網(wǎng)絡(luò) 收藏
摘 要: 通過(guò)對(duì)引起實(shí)時(shí)時(shí)鐘計(jì)時(shí)誤差因數(shù)的分析,給出了一種提高實(shí)時(shí)時(shí)鐘長(zhǎng)期計(jì)時(shí)準(zhǔn)確度的實(shí)用而有效的軟件方法。該方法具有成本低、易實(shí)現(xiàn)、通用性強(qiáng)、徹底校正等優(yōu)點(diǎn)。

  電子計(jì)時(shí)器通常以石英晶振為時(shí)鐘源。時(shí)鐘源的頻率通常為幾十kHz乃至幾十MHz,而常用時(shí)鐘的最小計(jì)時(shí)單位一般在0.01s~1s。高頻的時(shí)鐘源脈沖通過(guò)分頻器后產(chǎn)生基本定時(shí)脈沖。電子計(jì)時(shí)器的計(jì)時(shí)部分就是對(duì)基本定時(shí)脈沖進(jìn)行累加,產(chǎn)生秒、分、時(shí)等時(shí)間信息乃至日、月、年等日期信息。

1 引起計(jì)時(shí)誤差的因數(shù)

  一個(gè)常規(guī)電子計(jì)時(shí)器的計(jì)時(shí)準(zhǔn)確度,取決于晶振標(biāo)稱頻率(fs)與實(shí)際頻率(fo)的頻率偏差和晶振頻率的時(shí)漂、溫漂等離散參數(shù)。普通晶振的實(shí)際頻率與標(biāo)稱頻率有較大的偏差,可達(dá)萬(wàn)分之五(5‰),折算到一天計(jì)時(shí)誤差就是43.2s。一般室內(nèi)氣溫變化在每天10℃左右,對(duì)應(yīng)晶振頻率溫漂<10-5,若以一段較長(zhǎng)的時(shí)間取溫漂的平均值則更小。因此電子計(jì)時(shí)器的誤差主要取決于晶振實(shí)際頻率與標(biāo)稱頻率的偏差。

2 減少計(jì)時(shí)誤差的方法

2.1 純硬件方法

  對(duì)于純硬件計(jì)時(shí)電路,因分頻系數(shù)N固定不變,要提高計(jì)時(shí)準(zhǔn)確度只能調(diào)整fo,使得它盡可能接近于fs。常規(guī)減少計(jì)時(shí)誤差的方法是:微調(diào)元件L、C、R的參數(shù),調(diào)節(jié)硬件頻率,使得時(shí)鐘源的頻率誤差減小。但此方法操作復(fù)雜,沒(méi)有一定的電子技術(shù)知識(shí)和專用儀器很難校準(zhǔn),而且會(huì)降低晶振頻率穩(wěn)定度。

2.2 純軟件方法

  由微控制器控制的實(shí)時(shí)時(shí)鐘,可以采用軟件的方法消除晶振實(shí)際頻率與標(biāo)稱頻率間誤差引起的計(jì)時(shí)誤差。

  由微控制器控制的實(shí)時(shí)時(shí)鐘,可以用軟件模擬,將歸入總的計(jì)時(shí)程序中,從而消除fs和fo間偏差引來(lái)的計(jì)時(shí)誤差。對(duì)于專用硬件時(shí)鐘電路如:DS1320、PCF8583等,可以采用每小時(shí)或每10分鐘讀出時(shí)間,然后乘上再寫回芯片的方法校正。對(duì)于采用可編程分頻定時(shí)器,由軟件模擬時(shí)鐘功能的軟件實(shí)時(shí)時(shí)鐘,則有更好的提高計(jì)時(shí)準(zhǔn)確度的方法。因?yàn)槎〞r(shí)器的分頻系數(shù)是可以動(dòng)態(tài)改變的,如89C52內(nèi)置的16位計(jì)數(shù)器,分頻系數(shù)可以在1~216內(nèi)任意選取。令N=Ns作為分頻系數(shù)寫入計(jì)數(shù)器,這樣每個(gè)基本計(jì)時(shí)周期TN=TNS,從而實(shí)現(xiàn)軟件校正定時(shí)周期。

  在×Ns剛好為整數(shù)時(shí),可以使得計(jì)時(shí)誤差為0。大部分的情況×Ns并不是整數(shù),若將四舍五入后的值作為Ns,就會(huì)帶來(lái)量化誤差,最大可達(dá),這是一個(gè)不容忽視的問(wèn)題。以12MHz的89C52 T2定時(shí)器定時(shí)10ms為例,每天最大量化誤差累加是:24×3600÷(2×10000)=4.32s。若在片內(nèi)RAM中定義1個(gè)字節(jié)尾數(shù),令它的滿碼值為,則最大量化誤差就從原來(lái)的下降到。對(duì)應(yīng)于上述的10ms定時(shí)程序,其最大量化誤差的累加值由原來(lái)的4.32秒/天減少到0.016875秒/天,這是很大的改進(jìn)。根據(jù)精度要求,可以在片內(nèi)RAM中定義2個(gè)字節(jié),令它的滿碼值為,這樣最大量化誤差就可降為。減少量化誤差的具體算法是:對(duì)于使用89C52的T2定時(shí)器,若標(biāo)稱為12MHz的晶振實(shí)際長(zhǎng)期平均振蕩頻率fo=12.0006MHz,量化精度取1字節(jié),取TNS=10ms,則分頻系數(shù)為:

  

  Ni為第i次定時(shí)值,可能是10000或10001,這取決于NTi的進(jìn)位;NTi為第i次尾數(shù)暫存值。

  每次定時(shí)中斷服務(wù)程序均執(zhí)行(1)式,取得第i 次的定時(shí)計(jì)數(shù)值,然后實(shí)時(shí)時(shí)鐘增加10ms,完成時(shí)鐘功能。值得注意的是,Ni是實(shí)際的計(jì)數(shù)值,至于實(shí)際寫入特定定時(shí)器的數(shù)值,則須根據(jù)具體定時(shí)器的遞減、遞加計(jì)時(shí)性質(zhì)分別寫入Ni或Ni的補(bǔ)碼,同時(shí)定時(shí)器 在溢出到新的定時(shí)值裝入并開始新定時(shí)周期這段時(shí)間,將TLOAD考慮在內(nèi)。例如89C52 T2工作于自動(dòng)重裝定時(shí)初值、遞加定時(shí)方式時(shí),實(shí)際寫入定時(shí)器T2的捕獲/自動(dòng)重裝載寄存器(Rcap2H,Rcap2L)的值是Ni的補(bǔ)碼,即65536-Ni;而對(duì)于89C52 T0和T1定時(shí)器則實(shí)際寫入的定時(shí)初值是:Ni的補(bǔ)碼+TLOAD對(duì)應(yīng)的機(jī)器周期數(shù)。

3 測(cè)量晶振實(shí)際長(zhǎng)期振蕩頻率

  沒(méi)有專用儀器,怎樣測(cè)得晶振實(shí)際長(zhǎng)期振蕩頻率?有一個(gè)很簡(jiǎn)單的方法。以標(biāo)稱頻率下的定時(shí)計(jì)數(shù)值Ns作為實(shí)際計(jì)數(shù)值,在電臺(tái)報(bào)時(shí)時(shí)將時(shí)間設(shè)置正確,然后讓它運(yùn)行一段較長(zhǎng)的時(shí)間,再與電臺(tái)的報(bào)時(shí)比較求出誤差的秒數(shù),即可算出實(shí)際頻率。例如晶振標(biāo)稱頻率是12MHz,時(shí)鐘運(yùn)行了10天,快了432s,則

  

  若將上述算法編成程序,讓用戶直接輸入N和NT的值;或輸入運(yùn)行了多少天、時(shí)、分、秒,快或慢了多少秒,讓系統(tǒng)自動(dòng)算出N和NT,將會(huì)為從根本上校準(zhǔn)時(shí)鐘帶來(lái)極大方便。任何人都可以輕松地提高時(shí)鐘準(zhǔn)確度而無(wú)需專業(yè)知識(shí)和專用儀器。

  現(xiàn)在微控制器已廣泛應(yīng)用于人們?nèi)粘I畹母鱾€(gè)方面,電子時(shí)鐘也隨著它融入到各種電器和設(shè)備中,如專門時(shí)鐘功能的石英表和各種附帶電子計(jì)時(shí)器的電器如手機(jī)、普通液晶顯示電話、VCD機(jī)、DVD機(jī)、電視及高檔音響、空調(diào)遙控器、電力系統(tǒng)微機(jī)自動(dòng)化設(shè)備等。高檔專用計(jì)時(shí)器如高檔石英表,因?yàn)橛?jì)時(shí)是它的主功能,須保證計(jì)時(shí)準(zhǔn)確度而對(duì)計(jì)時(shí)時(shí)鐘源準(zhǔn)確度要求嚴(yán)格,每天誤差在1s以下。以上提到的其它電器,其時(shí)鐘只是它的一個(gè)附帶功能,出廠時(shí)一般不嚴(yán)格校正,甚至根本不做任何校正。所以誤差通常在1秒/天以上,有些達(dá)10秒/天以上,每天都需校正,否則運(yùn)行幾天就會(huì)因誤差太大而變得不可信,令用戶不勝煩惱。

  在電力系統(tǒng)中,無(wú)人值班變電站須安裝無(wú)功自動(dòng)控制設(shè)備。它根據(jù)一天中的不同時(shí)間段和電網(wǎng)無(wú)功情況自動(dòng)投退電容器組,使得電網(wǎng)的功率因數(shù)盡可能接近于1,以利于經(jīng)濟(jì)運(yùn)行。但有些設(shè)備內(nèi)部時(shí)鐘每天誤差>5分鐘。若將本文算法編入計(jì)時(shí)程序中,讓用戶自己校正定時(shí)參數(shù),將大大提高各種附帶時(shí)鐘的計(jì)時(shí)準(zhǔn)確度。

  將基于軟件提高實(shí)時(shí)時(shí)鐘準(zhǔn)確度的算法應(yīng)用于普通石英晶振,利用89C52 T2定時(shí)器的軟實(shí)時(shí)時(shí)鐘,未作校正前每天快11s;進(jìn)行軟件計(jì)時(shí)校正后,每10天的計(jì)時(shí)誤差<1s。本文提出的基于軟件提高時(shí)鐘準(zhǔn)確度的算法,具有極高的實(shí)用價(jià)值。

參考文獻(xiàn)

1 何立民.單片機(jī)應(yīng)用技術(shù)選編(1).北京:北京航空航天大學(xué)出版社,1994

2 羅 娟.計(jì)算機(jī)時(shí)間校準(zhǔn)方法.微計(jì)算機(jī)信息,1999;(4)


評(píng)論


技術(shù)專區(qū)

關(guān)閉