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