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