
看門狗的工作原理、應(yīng)用和設(shè)計(jì)思路
發(fā)布時(shí)間:2019-11-15 責(zé)任編輯:wenwei
【導(dǎo)讀】看門狗(watchdog timer)是一個(gè)定時(shí)器電路。一般有一個(gè)輸入叫喂狗,一個(gè)輸出到MCU的RST端。MCU正常工作的時(shí)候,每隔一端時(shí)間輸出一個(gè)信號(hào)到喂狗端,給WDT清零。如果超過(guò)規(guī)定的時(shí)間不喂狗(一般在程序跑飛時(shí)),WDT定時(shí)超過(guò),就會(huì)給出一個(gè)復(fù)位信號(hào)到MCU,使MCU復(fù)位,防止MCU死機(jī)。看門狗的作用就是防止程序發(fā)生死循環(huán),或者說(shuō)程序跑飛。

工作原理:在系統(tǒng)運(yùn)行以后也就啟動(dòng)了看門狗的計(jì)數(shù)器,看門狗就開始自動(dòng)計(jì)數(shù),如果到了一定的時(shí)間還不去清看門狗,那么看門狗計(jì)數(shù)器就會(huì)溢出從而引起看門狗中斷,造成系統(tǒng)復(fù)位。所以在使用有看門狗的芯片時(shí)要注意清看門狗。
硬件看門狗是利用一個(gè)定時(shí)器來(lái)監(jiān)控主程序的運(yùn)行,也就是說(shuō)在主程序的運(yùn)行過(guò)程中,要在定時(shí)時(shí)間到之前對(duì)定時(shí)器進(jìn)行復(fù)位。如果出現(xiàn)死循環(huán)或者說(shuō)PC指針回不來(lái),那么定時(shí)時(shí)間到了后就會(huì)使單片機(jī)復(fù)位。
軟件看門狗技術(shù)的原理也是類似的,只不過(guò)是用軟件的方法實(shí)現(xiàn)。還是以51系列為例,在51單片機(jī)中有兩個(gè)定時(shí)器,用來(lái)對(duì)主程序的運(yùn)行進(jìn)行監(jiān)控。我們可以對(duì)T0設(shè)定一定的定時(shí)時(shí)間,當(dāng)產(chǎn)生定時(shí)中斷的時(shí)候?qū)σ粋€(gè)變量進(jìn)行賦值,而這個(gè)變量在主程序運(yùn)行的開始已經(jīng)有了一個(gè)初值。這里設(shè)定的定時(shí)值要小于主程序的運(yùn)行時(shí)間,然后在主程序的尾部對(duì)變量的值進(jìn)行判斷。如果值發(fā)生了預(yù)期的變化,就說(shuō)明T0中斷正常;如果沒(méi)有發(fā)生變化則使程序復(fù)位。
T1用來(lái)監(jiān)控主程序的運(yùn)行。我們給T1設(shè)定一定的定時(shí)時(shí)間,在主程序中對(duì)其進(jìn)行復(fù)位。如果不能在一定的時(shí)間里對(duì)其進(jìn)行復(fù)位,T1的定時(shí)中斷就會(huì)使單片機(jī)復(fù)位。在這里T1的定時(shí)時(shí)間的設(shè)置要大于主程序的運(yùn)行時(shí)間,給主程序留有一定的的裕量。而T1的中斷正常與否則是由T0定時(shí)中斷子程序來(lái)監(jiān)視。這樣就構(gòu)成了一個(gè)循環(huán):T0監(jiān)視T1、T1監(jiān)視主程序、主程序又監(jiān)視T0,從而保證系統(tǒng)穩(wěn)定運(yùn)行。
51系列有專門的看門狗定時(shí)器,對(duì)系統(tǒng)頻率進(jìn)行分頻計(jì)數(shù)。定時(shí)器溢出時(shí),將引起復(fù)位。看門狗可設(shè)定溢出率,也可單獨(dú)用來(lái)作為定時(shí)器使用。
C8051Fxxx單片機(jī)內(nèi)部也有一個(gè)21位的使用系統(tǒng)時(shí)鐘的定時(shí)器,該定時(shí)器檢測(cè)對(duì)其控制寄存器的兩次特定寫操作的時(shí)間間隔。如果這個(gè)時(shí)間間隔超過(guò)了編程定義的極限值,將產(chǎn)生一個(gè)WDT復(fù)位。
看門狗使用注意:大多數(shù)51系列單片機(jī)都有看門狗。當(dāng)看門狗沒(méi)有被定時(shí)清零時(shí),將引起復(fù)位,這可防止程序跑飛。設(shè)計(jì)者必須清楚看門狗的溢出時(shí)間,來(lái)決定在合適的時(shí)候清看門狗。清看門狗也不能太過(guò)頻繁,否則會(huì)造成資源浪費(fèi)。程序正常運(yùn)行時(shí),軟件每隔一定的時(shí)間(小于定時(shí)器的溢出周期)給定時(shí)器置數(shù),即可預(yù)防溢出中斷而引起的誤復(fù)位。
看門狗運(yùn)用:看門狗可用來(lái)恢復(fù)系統(tǒng)的正常運(yùn)行,同時(shí)也是一種有效的監(jiān)視管理器(具有鎖定光驅(qū)、鎖定任何指定程序的作用,可用在家庭中防止小孩無(wú)節(jié)制地玩游戲、上網(wǎng)、看錄像等,具有很好的應(yīng)用價(jià)值)。
系統(tǒng)軟件“看門狗”的設(shè)計(jì)思路:
1、看門狗定時(shí)器T0的設(shè)置
在初始化程序塊中設(shè)置T0的工作方式,并開啟中斷和計(jì)數(shù)功能。系統(tǒng)Fosc=12MHz,T0為16位計(jì)數(shù)器,最大計(jì)數(shù)值為(2的16次方)-1=65535,T0輸入計(jì)數(shù)頻率是Fosc/12,溢出周期為(65535+1)/1=65536(μs)。
2、計(jì)算主控程序循環(huán)一次的耗時(shí)
考慮系統(tǒng)各功能模塊及其循環(huán)次數(shù),本系統(tǒng)主控制程序的運(yùn)行時(shí)間約為16.6ms。系統(tǒng)設(shè)置“看門狗”定時(shí)器T0定時(shí)30ms(T0的初值為65536-30000=35536)。主控程序的每次循環(huán)都將刷新T0的初值。如程序進(jìn)入“死循環(huán)”,而T0的初值在30ms內(nèi)未被刷新,這時(shí)“看門狗”定時(shí)器T0將溢出并申請(qǐng)中斷。
3、設(shè)計(jì)T0溢出所對(duì)應(yīng)的中斷服務(wù)程序
此子程序只須一條指令,即在T0對(duì)應(yīng)的中斷向量地址(000BH)寫入“無(wú)條件轉(zhuǎn)移”命令,把計(jì)算機(jī)拖回整個(gè)程序的第一行,對(duì)單片機(jī)重新進(jìn)行初始化并獲得正確的執(zhí)行順序。
推薦閱讀:
用有源鉗位正激轉(zhuǎn)換器閉環(huán)
特別推薦
- 電阻器分類、規(guī)格要素及全球頭部廠商對(duì)比分析
- 安森美公布 2025 年第一季度業(yè)績(jī)
- 厚膜電阻技術(shù)解析與應(yīng)用選型指南
- 驅(qū)動(dòng)電路設(shè)計(jì)(七)——自舉電源在5kW交錯(cuò)調(diào)制圖騰柱PFC應(yīng)用
- 微米級(jí)心跳:探索MEMS振蕩器的微觀世界
- 能效升級(jí)新引擎!拆解IGBT的三大技術(shù)優(yōu)勢(shì)
- 供需博弈加劇!Q1面板驅(qū)動(dòng)IC均價(jià)跌1%-3%
技術(shù)文章更多>>
- 雙A級(jí)榮耀!意法半導(dǎo)體用科技守護(hù)氣候與水安全
- 芝識(shí)課堂——運(yùn)算放大器(二),在使用之前有哪些注意事項(xiàng)?
- 從信號(hào)到光效:解碼工業(yè)級(jí)LED驅(qū)動(dòng)器的可靠性設(shè)計(jì)
- 10BASE-T1S如何運(yùn)用以太網(wǎng)重構(gòu)智能工廠的“神經(jīng)網(wǎng)絡(luò)”
- 從ADAS到無(wú)人駕駛:毫米波雷達(dá)如何重塑智能汽車感知力?
技術(shù)白皮書下載更多>>
- 車規(guī)與基于V2X的車輛協(xié)同主動(dòng)避撞技術(shù)展望
- 數(shù)字隔離助力新能源汽車安全隔離的新挑戰(zhàn)
- 汽車模塊拋負(fù)載的解決方案
- 車用連接器的安全創(chuàng)新應(yīng)用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索
車載娛樂(lè)
充電
充電電池
充電器
充電樁
觸控屏
觸控顯示
觸摸開關(guān)
傳感技術(shù)
傳感器
傳感器模塊
船型開關(guān)
串聯(lián)電阻公式
創(chuàng)智成
磁傳感器
磁環(huán)電感
磁敏三極管
磁性存儲(chǔ)器
磁性元件
磁珠電感
存儲(chǔ)器
大功率管
單向可控硅
刀開關(guān)
等離子顯示屏
低頻電感
低通濾波器
低音炮電路
滌綸電容
點(diǎn)膠設(shè)備