看門狗,又叫 watchdog timer,是一個定時(shí)器電路, 一般有一個輸入,叫喂狗,一個輸出到MCU的RST端,MCU正常工作的時(shí)候,每隔一段時(shí)間輸出一個信號到喂狗端,給 WDT 清零,如果超過規(guī)定時(shí)間不喂狗(一般在程序跑飛時(shí)),WDT 定時(shí)超過,就會給出一個復(fù)位信號到MCU,使MCU復(fù)位. 防止MCU死機(jī). 看門狗的作用就是防止程序發(fā)生死循環(huán)或者說程序跑飛。
工作原理:在系統(tǒng)運(yùn)行以后也就啟動了看門狗的計(jì)數(shù)器,看門狗就開始自動計(jì)數(shù),如果到了一定的時(shí)間還不去清看門狗,那么看門狗計(jì)數(shù)器就會溢出從而引起看門狗中斷,造成系統(tǒng)復(fù)位。所以在使用有看門狗的芯片時(shí)要注意清看門狗。
硬件看門狗是利用了一個定時(shí)器,來監(jiān)控主程序的運(yùn)行,也就是說在主程序的運(yùn)行過程中,我們要在定時(shí)時(shí)間到之前對定時(shí)器進(jìn)行復(fù)位如果出現(xiàn)死循環(huán),或者說PC指針不能回來。那么定時(shí)時(shí)間到后就會使單片機(jī)復(fù)位。
軟件看門狗技術(shù)的原理和這差不多,只不過是用軟件的方法實(shí)現(xiàn),我們還是以51系列來講,我們知道在51單片機(jī)中有兩個定時(shí)器,我們就可以用這兩個定時(shí)器來對主程序的運(yùn)行進(jìn)行監(jiān)控。我們可以對T0設(shè)定一定的定時(shí)時(shí)間,當(dāng)產(chǎn)生定時(shí)中斷的時(shí)候?qū)σ粋€變量進(jìn)行賦值,而這個變量在主程序運(yùn)行的開始已經(jīng)有了一個初值,在這里我們要設(shè)定的定時(shí)值要小于主程序的運(yùn)行時(shí)間,這樣在主程序的尾部對變量的值進(jìn)行判斷,如果值發(fā)生了預(yù)期的變化,就說明T0中斷正常,如果沒有發(fā)生變化則使程序復(fù)位。
對于T1我們用來監(jiān)控主程序的運(yùn)行,我們給T1設(shè)定一定的定時(shí)時(shí)間,在主程序中對其進(jìn)行復(fù)位,如果不能在一定的時(shí)間里對其進(jìn)行復(fù)位,T1 的定時(shí)中斷就會使單片機(jī)復(fù)位。在這里T1的定時(shí)時(shí)間要設(shè)的大于主程序的運(yùn)行時(shí)間,給主程序留有一定的的裕量。而T1的中斷正常與否我們再由T0定時(shí)中斷子程序來監(jiān)視。這樣就夠成了一個循環(huán),T0監(jiān)視T1,T1監(jiān)視主程序,主程序又來監(jiān)視T0,從而保證系統(tǒng)的穩(wěn)定運(yùn)行。
四信通信工業(yè)級無線路由器、工業(yè)級無線DTU具有雙重看門狗,包括軟件看門狗與硬件看門狗,當(dāng)M2M終端偶發(fā)異常時(shí),會智能進(jìn)行軟件喚醒或硬件斷電自動重啟,實(shí)時(shí)保障無線組網(wǎng)與無線數(shù)據(jù)傳輸暢通無阻。
軟件看門狗包括一個喂狗(kicking the dog or service the dog)進(jìn)程。喂狗進(jìn)程按一定的周期執(zhí)行喂狗操作,該周期小于等于定時(shí)器的周期。具體地,當(dāng)系統(tǒng)正常工作的時(shí)候,每隔一段時(shí)間輸出一個信號到喂狗端,給定時(shí)器清零;如果超過規(guī)定的時(shí)間不喂狗,定時(shí)器超時(shí),就會輸出一個復(fù)位信號到系統(tǒng),使系統(tǒng)復(fù)位,以防止系統(tǒng)死機(jī)。
四信公眾號
四信方案庫
服務(wù)電話