2016/06/18

為什麼MSP430的範例程式總是先將Watch Dog Timer 停用/關閉?

MSP430是TI的16位元微控制器 (Micro Controller),自從有一項產品開始導入這顆MCU之後,我大概有一年多都在寫這顆MCU的FW程式,但至今仍是半生不熟 XD

回到正題,每一間MCU公司幾乎都有推出自己的範例程式(還沒看過沒提供sample code的產品線),但是TI的範例程式很妙,第一行就是先把Watch Dog Timer關閉。很好奇,但一直沒花時間去找答案,看Programming Guide好像也沒特別解釋。

今天心血來潮,查到一篇在StackExchange上的討論串,才發現原因其實很簡單。
TI MSP系列產品的Watch Dog Timer是預設開啟的,所以如果初學新手沒有把Watch Dog Timer關閉,也沒有在程式裡將Watch Dog 的ISR設定好,這樣MCU會不斷的重新啟動 (Reset),會造成新手在學習過程中感到疑惑。所以TI提供的範例程式,第一行就是

    WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer

另外,Watch Dog Timer既然是一個timer,user也可以藉此把一些固定的行為放入Watch Dog Timer的ISR裡面執行,充分利用硬體所提供的timer。

還有就是,Watch Dog 必須在程式中確認某些條件有被妥善設定或給值,才不會將MCU重設,這個過程叫做餵狗,Feed the dog,如果忘記餵狗,WAT (Watch Dog Timer)就會把系統重設啦~

參考資料: