基于MSP430F11X的低功耗低成本實時時鐘
晶體的指定負(fù)載電容也影響RTC的精度,晶體的負(fù)載電容是晶體所需電容的總和,而不是晶體所提供電容的總和,晶體需要適當(dāng)?shù)呢?fù)載電容以便在指定的頻率起振。所有的MSP430器件所用的32768Hz振蕩器已經(jīng)集成了額定電容值為12pF的負(fù)載。這就為晶體提供了全部12pF的負(fù)載,它意味著為了獲取最佳的 RTC精度,必須指定所連接的32768Hz的晶體使用12pF的負(fù)載電容。
在RTC容限要求更高的應(yīng)用領(lǐng)域,可以使用一個更易調(diào)整的電容,在制造時進行調(diào)節(jié)。
更高級別的陶瓷(即NP0型)電容和聚酯軟片電容較適用于定時應(yīng)用領(lǐng)域,因為它們和通用陶瓷電容相比具有更少的介質(zhì)損耗和更佳的溫度系數(shù)。
可擴展型
MSP430F111 是極低功耗、低價格的微控制器,可理想的適用于實時時鐘器件。將MSP430作為RTC的一個主要優(yōu)點是它與專用的RTC器件相比具有可擴展性。所有的 MSP430x11x期間都包括一個16位RISC CPU、16位看門狗定時器、16位定時器A(帶3個捕捉/比較寄存器和模擬比較器)、最小128B的RAM、最小2Kb的ROM和最少14個腳通用 I/O口。很明顯MSP430能提供其它專用RTC所無法比擬的靈活性。
除此之外,定時器A模塊能提供斜率A/D轉(zhuǎn)換、PWM輸出和工作速率高達115200波特率的UART??撮T狗定時器也能作為一個簡單的定時器,并且通用I/O口和所有外圍設(shè)備具有可擴展的中斷能力。
軟件設(shè)計
RTC的應(yīng)用程序代碼相當(dāng)簡單,包括一個初始化子程序、一個主循環(huán)、一個計算時、分、秒的時鐘計數(shù)子程序和一個處理來自定時器A的1s中斷的中斷服務(wù)子程序。
初始化子程序可初始化MSP430的的不同部分。看門狗定時器被禁止,定時器A模塊被配置為可連續(xù)從0數(shù)到32768,每次到達32768時便給出一個中斷?;?a class="contentlabel" href="http://www.ex-cimer.com/news/listbylabel/label/時鐘">時鐘模塊也被設(shè)置。
主循環(huán)是一個無窮循環(huán),每當(dāng)定時器A發(fā)出一個中斷時,它便調(diào)用時鐘計數(shù)子程序,否則將CPU置于休眠方式。當(dāng)CPU休眠時,定時器A繼續(xù)計數(shù)。
定時器A中斷服務(wù)程序(ISR)處理狀態(tài)寄存器(SR)位,該位在進入ISR之前被壓入堆棧。這可使CPU在剛從ISR返回時處于有效方式,而不是休眠方式。ISR也可清零定時器A中斷標(biāo)志。
時鐘計數(shù)子程序?qū)⒚恳粋€定時器A中斷計為1秒。
源程序
STARTMOV#Stack,SP
CALL#Setup;初始化設(shè)置
MainloopBIS#LPM3,SR;CPU進入低功耗模式3
CALL#Clock;中斷處理后進入時鐘計算
JMPMainloop;再次進入省電模式
ClockSETC;設(shè)進位位
DADC.bSECOND;秒加1
CMP.b#060d,SECOND;判斷是否滿1分鐘
JLOClockend;若不滿則跳出
CLR.bSECOND;清空秒計數(shù)器
DADC.bMINUTE;分加1
CMP.b#60d,MINUTE;判斷是否滿1小時
JLOClockend;若不滿則跳出
CLR.bMINUTE;清空分鐘計數(shù)器
DADC.bHOUR;小時加1
CMP.b#024d,HOUR;判斷是否滿24小時
JLOClockend;若不滿則跳出
CLR.bHOUR;清空小時計數(shù)器
ClockendRET
;設(shè)置模塊和控制寄存器
SetupMOV#WDTPW+WDTHOLD,WDTCTL;禁止看門狗
MOV.b#08Ch,BCSCTL1;設(shè)置振蕩器和時鐘控制寄存器
MOV.b#000h,BCSCTL2;選擇DCOCLK為MCLK時鐘源
SetupTAMOV#0106h,TACTL;設(shè)置定時器A控制寄存器
MOV#CCRE0,CCTL0;中斷使能
MOV#8000h,CCR0;設(shè)置時間間隔
BIS#10h,TACTL;啟動TA,開始增計數(shù)模式
ClearRAMMOV.b#00h,SECOND;清空秒、分、時計數(shù)器
MOV.b#00h,MINUTE
MOV.b#00h,HOUR
EINT ;中斷使能
RET
評論