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