新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 看門狗工作原理和電路設(shè)計

看門狗工作原理和電路設(shè)計

—— 門狗工作原理和電路設(shè)計
作者: 時間:2024-05-06 來源:硬件筆記本 收藏

1.是什么?

本文引用地址:http://m.butianyuan.cn/article/202405/458341.htm

,又叫watchdog timer,是一個,一般有一個輸入,叫喂狗(kicking the dog/service the dog),一個輸出到MCU的RST端。

MCU正常工作的時候,每隔一段時間輸出一個信號到喂狗端,給 WDT清零,如果超過規(guī)定的時間不喂狗(一般在程序跑飛時),WDT定時超過,就會給出一個復(fù)位信號到MCU,使MCU復(fù)位,防止MCU死機(jī)。的作用就是防止程序發(fā)生死循環(huán),或者說程序跑飛。


2.硬件和軟件看門狗


? 硬件看門狗

硬件看門狗是利用了一個定時器,來監(jiān)控主程序的運(yùn)行,也就是說在主程序的運(yùn)行過程中,我們要在定時時間到之前對定時器進(jìn)行復(fù)位。如果出現(xiàn)死循環(huán),或者說PC指針不能回來,那么定時時間到后就會使單片機(jī)復(fù)位。常用的WDT芯片如MAX813,5045,IMP 813等。


? 軟件看門狗

而在某些情況下,也會采用純軟件的方法來設(shè)置看門狗,如在單片機(jī)系統(tǒng)中,利用閑置的定時器/計數(shù)器就可以設(shè)計一個軟件看門狗。具體實(shí)現(xiàn)步驟如下:

首先,在初始化程序中設(shè)置定時器/計數(shù)器的方式以控制寄存器(TMOD) 和定時時間的初值,并且打開中斷。

然后,根據(jù)定時器的時間,在主程序中按一定的時間間隔插入復(fù)位定時器的指令(喂狗), 兩條喂狗指令之間的時間間隔可以根據(jù)系統(tǒng)時鐘與指令周期計算出來,而且該時間周期應(yīng)該小于定時器的定時時間。

最后,在定時器的中斷服務(wù)程序中,設(shè)置一條無條件轉(zhuǎn)移指令,將程序計數(shù)器PC轉(zhuǎn)移到初始化程序的入口。

軟件看門狗的優(yōu)點(diǎn)是無需額外的硬件支持,但當(dāng)系統(tǒng)存在嚴(yán)重的錯誤時(例如:中斷服務(wù)出錯),則有可能導(dǎo)致軟件看門狗失效。


3.硬件看門狗芯片電路


看門狗芯片與MCU的連接關(guān)系如下:其基本的原理就是MCU要在固定的時間內(nèi)通過IO翻轉(zhuǎn)去控制看門狗芯片的WDI引腳,否則看門狗芯片就會將WDO拉低,進(jìn)而使CPU復(fù)位。


以SP706為例,看門狗芯片的引腳定義和功能描述如下圖:

(來自CSDN: heat.huang)


這個MR腳是手動復(fù)位,挺有用的,原理圖設(shè)計時注意下


當(dāng)J2接上跳線帽時,開啟看門狗。反之,看門狗關(guān)閉。

芯片參數(shù)比較少,關(guān)注下最短喂狗時間Twd 即可:


參考文獻(xiàn):

  1. https://www.bilibili.com/video/BV1134y197sh?spm_id_from=333.337.search-card.all.click&vd_source=1dd819fba773162098e21ce510439d48

  2. https://baike.baidu.com/item/%E7%9C%8B%E9%97%A8%E7%8B%97/6518878?fr=aladdin

  3. https://blog.csdn.net/weixin_40407893/article/details/117956750




評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉