單片機(jī)應(yīng)用中,常常會遇到這種情況,在用單片機(jī)制作電子鐘或要求根據(jù)時鐘啟控的控制系統(tǒng)時,會突然發(fā)現(xiàn)當(dāng)初校準(zhǔn)了的電子時鐘的時間竟然變快或是變慢了。
于是,嘗試用各種方法來調(diào)整它的走時精度,但是最終的效果還是不盡人意,只好每過一段時間手動調(diào)整一次。那么,是否可使時鐘走時更精確些呢?現(xiàn)探討如下:
誤差原因分析
1.單片機(jī)電子時鐘的計時脈沖基準(zhǔn),是由外部晶振的頻率經(jīng)過12分頻后提供的,采用內(nèi)部的定時,計數(shù)器來實現(xiàn)計時功能。所以,外接晶振頻率的精確度直接影響電子鐘計時的準(zhǔn)確性。
2.單片機(jī)電子時鐘利用內(nèi)部定時,計數(shù)器溢出產(chǎn)生中斷(12MHz晶振一般為50ms)再乘以相應(yīng)的倍率,來實現(xiàn)秒、分、時的轉(zhuǎn)換。大家都知道,從定時,計數(shù)器產(chǎn)生中斷請求到響應(yīng)中斷,需要3_8個機(jī)器周期。定時中斷子程序中的數(shù)據(jù)人棧和重裝定時,計數(shù)器的初值還需要占用數(shù)個機(jī)器周期。此外。從中斷人口轉(zhuǎn)到中斷子程序也要占用一定的機(jī)器周期。例如:
從上述程序可以看出,從中斷人口到定時/計數(shù)器初值的低8位裝入需要占用2+2+2=6個機(jī)器周期。所以,在編程時一般會把這6個機(jī)器周期加入定時/計數(shù)器的初值中。但是,從定時,計數(shù)器溢出中斷請求到執(zhí)行中斷需要幾個機(jī)器周期(3~8個機(jī)器周期)。就很難確定準(zhǔn)確值,正是這一原因?qū)е铝穗娮訒r鐘計時的不準(zhǔn)。
解決方法
1、采用高精度晶振方案
雖然采用高精度的晶振可以稍微提高電子鐘計時的精確度,但是晶振并不是導(dǎo)致電子鐘計時不準(zhǔn)的主要因素,而且高精度的晶振價格較高,所以不必采用此方案。
2、動態(tài)同步修正方案
從程序人手,采用動態(tài)同步修正方法給定時,計數(shù)器賦初值。動態(tài)同步修正方法如下:由于定時,計數(shù)器溢出后,又會從O開始自動加數(shù),故在給定時/計數(shù)器再次賦值前,先將定時,計數(shù)器低位(TLO)中的值和初始值相加,然后送人定時,計數(shù)器中,此時定時,計數(shù)器中的值即為動態(tài)同步修正后的準(zhǔn)確值。具體程序如下:
采用此種方法后,相信制作的電子時鐘的精度已有提高了。
3.自動調(diào)整方案
采用同步修正方案后,電子時鐘的精度雖然提高了很多,但是由于晶振頻率的偏差和一些其他未知因素的影響(同一塊電路板、同樣的程序換了一片單片機(jī)后,走時誤差不一樣,不知是何原因),時間長了仍然會有積累誤差。為此,可采用自動調(diào)整方案。實際上是一種容錯技術(shù)。其自動調(diào)整原理為:實測出誤差I(lǐng)s所需的時間,然后每隔這樣一段時間后就對秒進(jìn)行加“1”或減“1”調(diào)整。例如:電子鐘每過50小時就慢1秒,其自動調(diào)整程序如下:
以下是一個完整實例:
結(jié)語
使用此方法調(diào)整較費(fèi)時間,但效果非常好。經(jīng)實驗,一次調(diào)整可/以將月誤差控制在Is左右,如按此方法再次測出誤差I(lǐng)s所需的天數(shù)并進(jìn)行二次調(diào)整,其精度會更高。
-
晶振
+關(guān)注
關(guān)注
34文章
3197瀏覽量
69552 -
計數(shù)器
+關(guān)注
關(guān)注
32文章
2284瀏覽量
96028 -
電子鐘
+關(guān)注
關(guān)注
7文章
189瀏覽量
37353
原文標(biāo)題:你的單片機(jī)時鐘不準(zhǔn)了,這樣來調(diào)整!
文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
4G無線電子時鐘助力智慧城市建設(shè)

京準(zhǔn)電鐘:北斗衛(wèi)星構(gòu)建自主的時鐘基準(zhǔn)網(wǎng)絡(luò)


時空刻度:LED電子時鐘系統(tǒng)如何重塑現(xiàn)代節(jié)奏

電子時鐘系統(tǒng):城市脈絡(luò)中的精準(zhǔn)脈搏
分享醫(yī)院電子時鐘系統(tǒng)的設(shè)計原則
用ADS1282做多通道同步采集系統(tǒng),同步精度應(yīng)高于0.1ms,請問采用脈沖同步或者連續(xù)同步中的哪種方式更好?
LMK04826 CLKin/OSCin單端時鐘連接方式是怎樣的?
功放地和數(shù)字地應(yīng)采用哪種方式?
TAS2560設(shè)計時關(guān)于VSENSE走線遇到一個疑問求解答
MSPM0-高級控制計時器有助于實現(xiàn)更好的控制和更好的數(shù)字輸出

網(wǎng)絡(luò)時間同步系統(tǒng)的校時方式

精準(zhǔn)時刻,掌控未來:解鎖新一代PCIe時鐘板卡!

評論