在由單片機構成的微型計算機系統中,因爲單片機的工做經常會受到來自外界電磁場的干擾,形成程序的跑飛,而陷入死循環,程序的正常運行被打斷,由單片機控制的系統沒法繼續工做,會形成整個系統的陷入停滯狀態,發生不可預料的後果,因此出於對單片機運行狀態進行實時監測的考慮,便產生了一種專門用於監測單片機程序運行狀態的芯片,俗稱"看門狗"(watchdog)
基本原理:
看門狗,又叫 watchdog timer,是一個定時器電路,通常有一個輸入,叫喂狗(kicking the dog or service the dog),一個輸出到MCU的RST端,MCU正常工做的時候,每隔一段時間輸出一個信號到喂狗端,給 WDT 清零,若是超過規定的時間不喂狗,(通常在程序跑飛時),WDT 定時超過,就會給出一個復位信號到MCU,使MCU復位. 防止MCU死機. 看門狗的做用就是防止程序發生死循環,或者說程序跑飛。
工做原理:在系統運行之後也就啓動了看門狗的計數器,看門狗就開始自動計數,若是到了必定的時間還不去清看門狗,那麼看門狗計數器就會溢出從而引發看門狗中斷,形成系統復位。因此在使用有看門狗的芯片時要注意清看門狗。
應用方式:
1硬件看門狗:是利用了一個定時器,來監控主程序的運行,也就是說在主程序的運行過程當中,咱們要在定時時間到以前對定時器進行復位。
二、軟件看門狗:軟件看門狗技術的原理和這差很少,只不過是用軟件的方法實現,以51系列爲例,咱們知道在51單片機中有兩個定時器,咱們就能夠用這兩個定時器來對主程序的運行進行監控。咱們能夠對T0設定必定的定時時間,當產生定時中斷的時候對一個變量進行賦值,而這個變量在主程序運行的開始已經有了一個初值,在這裏咱們要設定的定時值要小於主程序的運行時間,這樣在主程序的尾部對變量的值進行判斷,若是值發生了預期的變化,就說明T0中斷正常,若是沒有發生變化則使程序復位。對於T1咱們用來監控主程序的運行,咱們給T1設定必定的定時時間,在主程序中對其進行復位,若是不能在必定的時間裏對其進行復位,T1 的定時中斷就會使單片機復位。在這裏T1的定時時間要設的大於主程序的運行時間,給主程序留有必定的的餘量。而T1的中斷正常與否咱們再由T0定時中斷子程序來監視。這樣就夠成了一個循環,T0監視T1,T1監視主 程序,主程序又來監視T0,從而保證系統的穩定運行。spa