
看門狗的工作原理、應(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ī)??撮T狗的作用就是防止程序發(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ù)位??撮T狗可設(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)
特別推薦
- 強(qiáng)強(qiáng)聯(lián)手!貿(mào)澤電子攜手ATI,為自動(dòng)化產(chǎn)線注入核心部件
- 瞄準(zhǔn)精準(zhǔn)醫(yī)療,Nordic新型芯片讓可穿戴醫(yī)療設(shè)備設(shè)計(jì)更自由
- 信號(hào)切換全能手:Pickering 125系列提供了從直流到射頻的完整舌簧繼電器解決方案
- 射頻供電新突破:Flex發(fā)布兩款高效DC/DC轉(zhuǎn)換器,專攻微波與通信應(yīng)用
- 電源架構(gòu)革新:多通道PMIC并聯(lián)實(shí)現(xiàn)大電流輸出的設(shè)計(jì)秘籍
技術(shù)文章更多>>
- 固態(tài)斷路器(SSCB)的發(fā)展與突破,安森美SiC JFET因何成為最優(yōu)解
- 尋找TE元件?貿(mào)澤電子供應(yīng)TE Connectivity超75萬(wàn)種元器件
- 重要發(fā)聲!意法半導(dǎo)體總裁格蘭迪亮相巴克萊全球科技年會(huì)
- 品質(zhì)追求:來(lái)自晶圓廠的真知灼見
- CPU總是過(guò)熱降頻?工程師教你只看這5個(gè)核心參數(shù),選出高性價(jià)比靜音風(fēng)扇
技術(shù)白皮書下載更多>>
- 車規(guī)與基于V2X的車輛協(xié)同主動(dòng)避撞技術(shù)展望
- 數(shù)字隔離助力新能源汽車安全隔離的新挑戰(zhàn)
- 汽車模塊拋負(fù)載的解決方案
- 車用連接器的安全創(chuàng)新應(yīng)用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索
電容器單位
電容器公式
電聲器件
電位器
電位器接法
電壓表
電壓傳感器
電壓互感器
電源變壓器
電源風(fēng)扇
電源管理
電源管理IC
電源連接器
電源濾波器
電源模塊
電源模塊
電源適配器
電子書
電阻測(cè)試儀
電阻觸控屏
電阻器
電阻作用
調(diào)速開關(guān)
調(diào)諧器
鼎智
動(dòng)力電池
動(dòng)力控制
獨(dú)石電容
端子機(jī)
斷路器



