看門(mén)狗工作原理和電路設計
1.看門(mén)狗是什么?
本文引用地址:http://dyxdggzs.com/article/202405/458341.htm看門(mén)狗,又叫watchdog timer,是一個(gè)定時(shí)器電路,一般有一個(gè)輸入,叫喂狗(kicking the dog/service the dog),一個(gè)輸出到MCU的RST端。
MCU正常工作的時(shí)候,每隔一段時(shí)間輸出一個(gè)信號到喂狗端,給 WDT清零,如果超過(guò)規定的時(shí)間不喂狗(一般在程序跑飛時(shí)),WDT定時(shí)超過(guò),就會(huì )給出一個(gè)復位信號到MCU,使MCU復位,防止MCU死機。看門(mén)狗的作用就是防止程序發(fā)生死循環(huán),或者說(shuō)程序跑飛。
2.硬件和軟件看門(mén)狗
? 硬件看門(mén)狗
硬件看門(mén)狗是利用了一個(gè)定時(shí)器,來(lái)監控主程序的運行,也就是說(shuō)在主程序的運行過(guò)程中,我們要在定時(shí)時(shí)間到之前對定時(shí)器進(jìn)行復位。如果出現死循環(huán),或者說(shuō)PC指針不能回來(lái),那么定時(shí)時(shí)間到后就會(huì )使單片機復位。常用的WDT芯片如MAX813,5045,IMP 813等。
? 軟件看門(mén)狗
而在某些情況下,也會(huì )采用純軟件的方法來(lái)設置看門(mén)狗,如在單片機系統中,利用閑置的定時(shí)器/計數器就可以設計一個(gè)軟件看門(mén)狗。具體實(shí)現步驟如下:
首先,在初始化程序中設置定時(shí)器/計數器的方式以控制寄存器(TMOD) 和定時(shí)時(shí)間的初值,并且打開(kāi)中斷。
然后,根據定時(shí)器的時(shí)間,在主程序中按一定的時(shí)間間隔插入復位定時(shí)器的指令(喂狗), 兩條喂狗指令之間的時(shí)間間隔可以根據系統時(shí)鐘與指令周期計算出來(lái),而且該時(shí)間周期應該小于定時(shí)器的定時(shí)時(shí)間。
最后,在定時(shí)器的中斷服務(wù)程序中,設置一條無(wú)條件轉移指令,將程序計數器PC轉移到初始化程序的入口。
軟件看門(mén)狗的優(yōu)點(diǎn)是無(wú)需額外的硬件支持,但當系統存在嚴重的錯誤時(shí)(例如:中斷服務(wù)出錯),則有可能導致軟件看門(mén)狗失效。
3.硬件看門(mén)狗芯片電路
看門(mén)狗芯片與MCU的連接關(guān)系如下:其基本的原理就是MCU要在固定的時(shí)間內通過(guò)IO翻轉去控制看門(mén)狗芯片的WDI引腳,否則看門(mén)狗芯片就會(huì )將WDO拉低,進(jìn)而使CPU復位。

以SP706為例,看門(mén)狗芯片的引腳定義和功能描述如下圖:
(來(lái)自CSDN: heat.huang)

這個(gè)MR腳是手動(dòng)復位,挺有用的,原理圖設計時(shí)注意下

當J2接上跳線(xiàn)帽時(shí),開(kāi)啟看門(mén)狗。反之,看門(mén)狗關(guān)閉。
芯片參數比較少,關(guān)注下最短喂狗時(shí)間Twd 即可:

參考文獻:
https://www.bilibili.com/video/BV1134y197sh?spm_id_from=333.337.search-card.all.click&vd_source=1dd819fba773162098e21ce510439d48
https://baike.baidu.com/item/%E7%9C%8B%E9%97%A8%E7%8B%97/6518878?fr=aladdin
https://blog.csdn.net/weixin_40407893/article/details/117956750
評論