SONIX
微控制器中Watchdog(看門狗)計時器的振蕩源,來源于晶片內部獨立的低速RC振蕩。看門狗計時器的溢出時間爲:256ms@5V、
512ms@3V,由于內部獨立RC振蕩頻率受工作電壓和環境溫度影響,因此看門狗溢出時間爲一般經驗值,1系列母體可能不同,如1917,可以通過
WTCKS,WTRATE,CLKMD這幾個位來選擇看門狗計時器的溢出時間。
看門狗除了在特殊場合用作計時器外,主要用來防止程式的跑飛。但如果使用方法不當,看門狗的作用便不能充分發揮。
用戶可以通過Code
Option選項控制看門狗計時器。在編譯選項中,Watch_Dog有3個配置選項可供選擇:Always_On,Enable和Disable。各選
項的選擇可以參考datasheet看門狗計時器相關章節。程式中不可以打開或關閉Watchdog,清除WatchDog采用@RST_WDT,即給
WDTR 賦值5A。1系列清狗采用B0BSET FWDRST指令。
復位看門狗計時器的位置:
一般來說復位看門狗計時器的最好位置是將重定設置在程式的主幹道上。這樣如果程式跑飛造成某個程式模組的閉環回不到程式的主幹道上,看門狗計時器就會及時
溢出促使晶片復位。特別要注意的是不要安置在副程式或中斷處理程式中。而且復位看門狗計時器的動作最好只作一次,從而避免在某個閉環中還是一直復位,看門
狗計時器也就失去了作用。
另外復位看門狗計時器也不能放置在Timer中斷裏,因爲MCU跑到死回圈時,一樣會進TIMER中斷也會清看門狗計時器。
此外,用戶可以在程式開始通過偵測 Pflag 系統寄存器中的 NT0 = 0、NPD = 0 來判定是否由看門狗計時器溢出復位,從而作相應的處理。