新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > MSP430單片機看門狗面面觀

MSP430單片機看門狗面面觀

作者: 時間:2013-04-07 來源:網(wǎng)絡(luò) 收藏

設(shè)置

mov.w # WDTPW+WDTCNTCL+WDTIS1 ,WDTCTL

mov.w # WDTPW+WDTCNTCL+WDTSSEL,WDTCTL;等

————————————————————————————————————————————

關(guān)于喂狗

喂狗,也就是在定時器溢出之前對其進行清零的操作。

網(wǎng)上和書里對喂狗的介紹不多,大部分都只說使用“WDTCTL = WDTPW + WDTCNTCL;”即可。一般使用起來沒什么問題,但是當(dāng)不使用默認的時鐘源和分頻系數(shù)之后,問題就來了。(以G2XXX系列,SMCLK=1M,ACLK=32K為例)直接使用“WDTCTL = WDTPW + WDTCNTCL;”喂狗之后,看門狗就被重置成復(fù)位狀態(tài),看門狗復(fù)位時間就變成了32ms,如果遠小于你的喂狗時間,程序就沒法正常工作了,典型表現(xiàn)為定時重新啟動。仔細查看WDTCTL寄存器之后,就能發(fā)現(xiàn)問題。

1.jpg

要正確喂狗最好的辦法就是不改變原有看門狗配置的情況下將WDTCNTCL置1。這樣看來,簡單的就是“WDTCTL |= WDTPW + WDTCNTCL;”,其中需要注意的是WDTPW位讀出來是0x69,而需要寫入的是0x5A,實際上0x69|0x5A=0x7B,這就造成了在喂狗的時候,密碼錯誤造成重啟。所以正確的喂狗語句就初始化看門狗的語句。當(dāng)然如果想使用通用的喂狗語句,“WDTCTL = WDTPW + WDTCNTCL + (WDTCTL 0x00FF);”應(yīng)該是最正確的(其中(WDTCTL 0x00FF)是用來獲取看門狗配置的)。

不過430頭文件已經(jīng)很清新了,喂狗一般直接加上時間(頭文件里面都處理過了)。

———————————————————————————————————————

之看門狗的作用

看門狗定時器是一個計數(shù)器,基本功能是在發(fā)生軟件問題和程序跑飛后使系統(tǒng)重新啟動??撮T狗計數(shù)器正常工作時自動計數(shù),程序流程定期將其復(fù)位清零,如果系統(tǒng)在某處卡死或跑飛,該定時器將溢出,并將進入中斷。在定時器中斷中執(zhí)行一些復(fù)位操作,使系統(tǒng)恢復(fù)正常的工作狀態(tài),即在程序沒有正常運行期間,如期復(fù)位看門狗以保證所選擇的定時溢出歸零,使處理器重新啟動。

1. 看門狗問題及相關(guān)實驗

現(xiàn)今市面上流行的一些,多嵌有內(nèi)部WDT,如TI的系列,Philips的P87XXX和P89XXX系列,Microchip的PIC列,Atmel的AT89SXX系列和Holtek公司的Htxxx系列。但是這些內(nèi)部看門狗在工作時,多存在一定的誤差。一些工程師在設(shè)計的過程中,由于忽略了這一點,導(dǎo)致系統(tǒng)出現(xiàn)異常。系列單片機是美國德州儀器公司(TI)近幾年開發(fā)的新一代單片機,該系列是一款16位、具有精簡指令集、超低功耗的全新概念混合型單片機。在眾多單片機系列中,由于它具有極低的功耗、豐富的片內(nèi)外設(shè)和方便靈活的開發(fā)手段,已成為一顆耀眼的新星。其內(nèi)部自帶看門狗及復(fù)位電路,理論上如果程序跑飛,可用看門狗將其復(fù)位。但在實際使用過程中,發(fā)現(xiàn)看門狗的作用并非萬無一失,以下實驗證明了這一點。

實驗電路如圖1所示。

2.jpg



關(guān)鍵詞: MSP430 單片機 看門狗

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉