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

電涌保護器相關文章:電涌保護器原理
過電壓保護器相關文章:過電壓保護器原理 電機保護器相關文章:電機保護器原理
評論