MSP430學習小結(jié)
由于我用過AVR的單片機,和AVR的相比,MSP430的看門狗要靈活的多,首先默認看門狗是開著的,因此如果不使用看門狗的話要關(guān)閉,指令如下:
WDTCTL = WDTPW + WDTHOLD
如果打開看門狗則需要在程序中清零,指令如下:
WDTCTL=WDTPW+WDTCNTCL
這只是基本的應用,430的看門狗要稍微復雜一些,首先從IAR的頭文件中看看定義了幾種工作狀態(tài):
2.WDT通過SSEL 和IS0 IS1 3位可以確定與8種時鐘源相關(guān)的時間(ACLK=32768Hz,SMCLK=1MHz)
SMCLK=1MH(對應8種)
WDT_MDLY_32
WDT_MRST_32
WDT_MDLY_8
WDT_MRST_8
WDT_MDLY_0_5
WDT_MRST_0_5
WDT_MDLY_0_064
WDT_MRST_0_064
ACLK=32768Hz(對應8種)
WDT_ADLY_1000
WDT_ARST_1000
WDT_ADLY_250
WDT_ARST_250
WDT_ADLY_16
WDT_ARST_16
WDT_ADLY_1_9
WDT_ARST_1_9
在頭文件中查得:
代碼解釋:
WDTCTL =WDT_ARST_1000;
在頭文件中看到WDT_ARST_1000的定義為:(WDTPW+WDTCNTCL+WDTSSEL0+WDTIS2)
即上一條指令執(zhí)行的是WDTCTL= WDTPW+WDTCNTCL+WDTSSEL0+WDTIS2。
WDTCTL設置每條命令中必有WDTPW+..因為WDTPW代表寫WDTCTL的時候高八位寫05Ah,讀的時候高八位為069h,否則觸發(fā)PUC。
WDTCNTCL:看門狗計數(shù)器清零.
WDTSSEL0:表示W(wǎng)DTSSEL第0位置1,既0001.
WDTIS2: 表示W(wǎng)DTIS2第2位置1,既0100.
設置的含義看MSP4305438 PDF文檔
下面介紹兩個典型應用:
1、在動態(tài)數(shù)碼管顯示中的應用,具體代碼可以參考我之前的筆記,部分代碼如下:
__interrupt void watchdog_timer(void)
{
}
這個程序主要是將看門狗定時器當做普通定時器使用,1.9ms剛好適合動態(tài)掃描間隔,在看門狗中斷中對數(shù)碼管進行動態(tài)掃描,這樣使用相對于開一個定時器來說要有所方便。因此在需要的定時與看門狗定時器的幾個時間相同時可以考慮使用看門狗。
2、普通延時
WDTCTL = WDT_ADLY_1000;
這個程序同樣是將看門狗當普通定時器使用,在主程序中讀取中斷標志位,實現(xiàn)延時效果,上面的程序為什么是延時2S自己分析。
這里面舉了兩個例子,是最近學習的一點小體會,當然還是不能忘了看門狗的本能工作,在程序較為簡單時可以考慮使用看門狗定時器簡化設計。另外還有一點覺得比較重要的是雖然頭文件中對寄存器都有了很好的定義,但是還是很有必要對著頭文件和寄存器把主要的寄存器看一面,弄清每一種工作模式的使用方式和注意點。
關(guān)于軟件看門狗 看門狗是類似與硬件保護卡之類.保護硬盤數(shù)據(jù)的. 是單片機一個復位芯片,在單片機遇到異常情況之下自動復位!~~ 看門狗是用來看家的,作用是保護你家的財產(chǎn)不丟失, 看門狗實際上是一個計數(shù)器,一般給看門狗一個大數(shù),程序開始運行后看門狗開始倒計數(shù)。如果程序運行正常,過一段時間CPU應發(fā)出指令讓看門狗復位,重新開始倒計數(shù)。如果看門狗減到0就認為程序沒有正常工作,強制整個系統(tǒng)復位。 一般是為了程序進入死循環(huán)或死機!有的單片機不需外加看門狗電路(PIC)。 看門狗定時器對微控制器提供了獨立的保護系統(tǒng).當系統(tǒng)出現(xiàn)故障時,在可選的超時周期之后,看門狗將以RESET信號作出響應.像x25045就可選超時周期為1.4秒,600毫秒,200毫秒三種.當你的程序死機時,x25045就會使單片機復位. 關(guān)鍵詞:
MSP430學習小
相關(guān)推薦技術(shù)專區(qū) |
評論