由看門狗WDT引發(fā)系統(tǒng)復(fù)位的電路結(jié)構(gòu)等效圖如圖所示。從該圖中可以看出,只有當狀態(tài)信號SLEEP=1,即單片機處于非睡眠狀態(tài)時,看門狗超時溢出才會引發(fā)單片機的復(fù)位操作。而在單片機處于睡眠狀態(tài),即狀態(tài)信號SLEEP=0時,看門狗超時溢出會喚醒單片機。
圖 看門狗復(fù)位電路結(jié)構(gòu)等效電路
看門狗就是一個用獨立時鐘源提供的脈沖進行累加計數(shù)的計數(shù)器,無需任何外部元件。獨立的RC時鐘信號源是指RC振蕩器與OSC1(ULKIIN)引腳的外接RC振蕩器,OSC1和OSC2外接晶體振蕩器/陶瓷諧振器構(gòu)成的單片機系統(tǒng)時鐘是分離的。這就意味著,即使單片機進入系統(tǒng)時鐘停振的睡眠狀態(tài),監(jiān)視定時器WDT仍然能夠運行。
在單片機執(zhí)行程序期間,一次看門狗WDT超時溢出,將使單片機產(chǎn)生復(fù)位操作(稱為WDT復(fù)位)。如果單片機處于睡眠狀態(tài),一次看門狗WDT超時溢出將使單片機被喚醒,恢復(fù)正常運行狀態(tài),并且繼續(xù)執(zhí)行在進入睡眠之前被擱置的程序(稱為WDT喚醒)。
每次看門狗超時溢出,都會使得狀態(tài)寄存器STATUS中的了T0位被清0,以記錄曾經(jīng)發(fā)生的這次看門狗溢出事件,供作程序查詢判斷用。
即當WDTE=0時,看門狗WDT將被永久禁止;當WDTE=1時,看門狗WDT將被永久啟用。就是說,只要WDTE被定義成1,以后在用戶程序中將再也無法禁止看門狗的運行。
若想不讓看門狗WDT發(fā)生超時溢出,在用戶程序中只能不停地、周期性地將看門狗計時器清0,使它不會因計數(shù)到超過最大值而溢出。
看門狗計時器的計時周期取決于獨立RC振蕩源的頻率和計時器的寬度,同時在一定程度上受到工作電壓、環(huán)蟑溫度、制作工藝等因素的影響。
另外,看門狗的超時周期還可以借助于分頻器以及分頻器的分頻比,在一定范圍內(nèi)改變和延長。分頻器是否配置給看門狗使用,可以通過用戶程序定義選項寄存器OPTION KEG的PSA位進行設(shè)置。