MC9S08MG64實時時鐘的校準(zhǔn)和補償(二)
有足夠的時間處理FTMCH1中斷
每一個秒脈沖的補償時間都被加上σ,在例程中σ 被設(shè)置為0x8000,在總線時鐘為32768 ×512Hz時這相當(dāng)于1.9ms。σ值的大小取決于補償間隔(compensation period)和補償值(compensation value)。
0 《 σ - (M-1)(512 × V/M) 《 0xFFFF
-128 《 V 《 127
一般來講,當(dāng)溫度變化時晶體的誤差總是負的,所以σ 可以設(shè)置為一個比較小的值,比如0x2000,0x1000,補償?shù)姆秶靡栽龃蟆?/P>
FTMCH0設(shè)置為輸出比較模式(匹配時設(shè)置輸出為高),當(dāng)FTM 計數(shù)器的值和FTMCH0V 寄存器的值匹配時FTMCH0引腳被置高,F(xiàn)TMCH0中斷被觸發(fā)。FTM 設(shè)置為128分頻,0.5秒后FTMCH0輸出變低。當(dāng)輸出變低時FTM的分頻比設(shè)置為1。
4.2 硬件配置和例程
MCU的串口SCI0用來和PC通訊,在PC端可以使用超級終端。IIC用來讀取集成溫度傳感器LM75B的數(shù)值。ADC模塊讀取NTC和電阻的分壓。RTCCLKOUT (Pin20) 連接至FTMCH1 (pin 38)。1Hz秒脈沖FTMCH0 pin (Pin37)通過光耦隔離后輸出,可以在校表臺上測量。例程是用CodeWarrior 6.3 IDE開發(fā)的。
電路板上電后會進入自動補償模式,根據(jù)環(huán)境溫度的變化對實時時鐘進行補償。在超級終端中按任意鍵退出自動補償模式,然后輸入命令help可以顯示所有可用的命令:
comp 顯示當(dāng)前的補償間隔和補償值,并輸入新值。
temp 顯示溫度。
date 顯示日期并輸入新日期。
time 顯示時間并輸入新時間。
auto 重新進入自動補償模式。
在FTMCH1的中斷服務(wù)程序中,做FTMCH0輸出比較時間的調(diào)整。如果當(dāng)前補償周期結(jié)束,它會檢查有沒有新的補償間隔和補償值。如果有則把新值載入補償寄存器,并重新計算補償調(diào)整值。
在補償周期結(jié)束前,IRTC_STATUS 寄存器中的C_DON (IRTC_STATUS_L_C_DON) 會被置位。它被用來對齊補償周期。
實時時鐘iRTC的補償機制可以在長時間內(nèi)(》補償間隔)輸出高精度的秒脈沖,F(xiàn)TM則用來保證在補償間隔之內(nèi)每個秒脈沖周期相等。
電涌保護器相關(guān)文章:電涌保護器原理
過電壓保護器相關(guān)文章:過電壓保護器原理 電機保護器相關(guān)文章:電機保護器原理
評論