應廣單片機 PMC156/PMS156 系列8 位 OTP IO 類型單片機看門狗的應用
什么是看門狗定時器(WDT,或簡稱為看門狗)
就像名人錢包里住著一只小狗,愛叫,通常認為看門狗定時器是不必要的或多余的。然而,將兩者等同起來會對看門狗造成很大的傷害。與“錢包狗”不同,看門狗增加了關鍵的監控功能,可讓您從內部和外部監控系統是否發生故障,并在發生故障時采取行動。看門狗定時器到底是什么?簡而言之,看門狗定時器是一種設備,如果在特定時間范圍內未收到來自處理器的周期性脈沖信號,它會發出復位輸出。實現此目的的一種方法是將來自處理器的數字信號輸出 (GPIO) 饋送到外部看門狗定時器的看門狗輸入 (WDI)
看門狗芯片與MCU的連接關系如下:其基本的原理就是MCU要在固定的時間內通過IO翻轉去控制看門狗芯片的WDI引腳,否則看門狗芯片就會將WDO拉低,進而使CPU復位。
看門狗,又叫watchdog timer,是一個定時器電路,一般有一個輸入,叫喂狗(kicking the dog/service the dog),一個輸出到MCU的RST端。
MCU正常工作的時候,每隔一段時間輸出一個信號到喂狗端,給 WDT清零,如果超過規定的時間不喂狗(一般在程序跑飛時),WDT定時超過,就會給出一個復位信號到MCU,使MCU復位,防止MCU死機。看門狗的作用就是防止程序發生死循環,或者說程序跑飛
看門狗計數器是一個定時器,其時鐘源來自內部低頻振蕩器(ILRC)。利用 misc 寄存器的選擇,可以設定三
種不同的看門狗計數器超時時間,它們是:
當 misc[1:0]=10 時:16384 個 ILRC 時鐘周期
當 misc[1:0]=01 時: 4096 個 ILRC 時鐘周期
當 misc[1:0]=01(默認) 時:2048 個 ILRC 時鐘周期
ILRC 的頻率有可能因為工廠制造的變化, 電源電壓和工作溫度而漂移很多; 使用者必須預留安全操作范
圍。為確保看門狗計數器在超時溢出周期之前被清零,在安全時間內,用指令“wdreset”清零看門狗計數器。在上
電復位或任何時候使用 wdreset 指令,看門狗計數器都會被清零。當看門狗計數器超時溢出時,PMC156/PMS156
將復位并重新運行程序。請特別注意,由于生產制程會引起 ILRC 頻率相當大的漂移,上面的數據僅供設計參考
用,還是需要以各個單片機測量到的數據為準。
應廣單片機 PMC156/PMS156 系列8 位 OTP IO 類型單片機 看門狗
PMC156/PMS156 系列8 位 OTP IO 類型單片機
PMC156/PMS156 有三個中斷源:T16 計數器中斷和外部中斷源 PA0 和 PB0 中斷源。每個中斷請求源都
有自己的中斷控制位啟用或停用它。
所有的中斷請求標志位是由硬件置位并且并通過軟件寫寄存器 intrq 清零。
中斷請求標志設置點可以是上升沿或下降沿或兩者兼而有之,這取決于對寄存器 integs 的
設置。所有的中斷請求源最后都需由 engint 指令控制(啟用全局中斷)使中斷運行,以及使用 disgint 指令(停
用全局中斷)停用它。中斷堆棧是共享數據存儲器,其地址由堆棧寄存器 sp 指定。由于程序計數器是 16 位寬度,
堆棧寄存器 sp 位 0 應保持 0。
此外,用戶可以使用 pushaf / popaf 指令存儲 ACC 和標志寄存器的值到堆棧,
以及使用 pushaf / popaf 指令將值從堆棧恢復到 ACC 和標志寄存器中。
由于堆棧與數據存儲器共享,在 Mini-C 模式,堆棧位置與深度由編譯程序安排。在匯編模式或自行定義堆
棧深度時,用戶應仔細安排位置,以防地址沖突。
為何看門狗定時器如此重要?
看門狗定時器提供了一種方法,用于向系統發出警報或重置軟件凍結或掛起的處理器。雖然沒有人會故意設計凍結的軟件,但優秀的系統設計人員無論如何都會為故障做好準備——因為為意外做好準備總是更好的。如果沒有這種監控,處理器可能會無限期地保持凍結狀態并導致進一步的系統故障。
具有可調超時間隔的外部看門狗定時器(例如 PMC156/PMS156 )可以在短短幾毫秒內識別這些軟件凍結并適當地重置系統或處理器。此功能在嵌入式或遠程系統中尤其必要,因為手動重置系統不切實際甚至不可能。如何在我的嵌入式系統中實現看門狗定時器?實現看門狗定時器有兩種主要方法:
使用具有集成看門狗功能的處理器。
許多微控制器(例如 PMC156/PMS156 系列)都具有集成的看門狗功能。這很有價值,因為它非常容易實現,并且不需要其他 IC。
但是,它有一個主要的警告:集成看門狗可能并不總是按預期工作,因為導致 MCU 發生故障的代碼問題也可能無意中禁用看門狗定時器。同樣,軟件的編寫方式使得內部看門狗應該能夠檢測到任何凍結或掛起。但是,采取額外步驟以冗余方式監視看門狗輸入可以幫助解決代碼中不可預見的錯誤。
使用帶有看門狗定時器的電壓監控器。
具有看門狗定時器功能的監控器(例如 PMC156/PMS156)允許您以外部冗余方式監視電源電壓和看門狗信號。如果處理器的內部看門狗無法檢測到錯誤或丟失的脈沖,則外部看門狗定時器將增加其他方式無法實現的檢測級別。原則上,看門狗定時器的功能并不太復雜。然而,其在維護系統可靠性方面的重要性怎么強調也不為過。如果發生故障時人為啟動的系統重置不可能或非常困難,則尤其如此