看門(mén)狗的工作原理、應(yīng)用和設(shè)計(jì)思路
發(fā)布時(shí)間:2019-11-15 責(zé)任編輯:wenwei
【導(dǎo)讀】看門(mén)狗(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(mén)狗的作用就是防止程序發(fā)生死循環(huán),或者說(shuō)程序跑飛。
工作原理:在系統(tǒng)運(yùn)行以后也就啟動(dòng)了看門(mén)狗的計(jì)數(shù)器,看門(mén)狗就開(kāi)始自動(dòng)計(jì)數(shù),如果到了一定的時(shí)間還不去清看門(mén)狗,那么看門(mén)狗計(jì)數(shù)器就會(huì)溢出從而引起看門(mén)狗中斷,造成系統(tǒng)復(fù)位。所以在使用有看門(mén)狗的芯片時(shí)要注意清看門(mén)狗。
硬件看門(mén)狗是利用一個(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ù)位。
軟件看門(mén)狗技術(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)行的開(kāi)始已經(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系列有專門(mén)的看門(mén)狗定時(shí)器,對(duì)系統(tǒng)頻率進(jìn)行分頻計(jì)數(shù)。定時(shí)器溢出時(shí),將引起復(fù)位??撮T(mén)狗可設(shè)定溢出率,也可單獨(dú)用來(lái)作為定時(shí)器使用。
C8051Fxxx單片機(jī)內(nèi)部也有一個(gè)21位的使用系統(tǒng)時(shí)鐘的定時(shí)器,該定時(shí)器檢測(cè)對(duì)其控制寄存器的兩次特定寫(xiě)操作的時(shí)間間隔。如果這個(gè)時(shí)間間隔超過(guò)了編程定義的極限值,將產(chǎn)生一個(gè)WDT復(fù)位。
看門(mén)狗使用注意:大多數(shù)51系列單片機(jī)都有看門(mén)狗。當(dāng)看門(mén)狗沒(méi)有被定時(shí)清零時(shí),將引起復(fù)位,這可防止程序跑飛。設(shè)計(jì)者必須清楚看門(mén)狗的溢出時(shí)間,來(lái)決定在合適的時(shí)候清看門(mén)狗。清看門(mén)狗也不能太過(guò)頻繁,否則會(huì)造成資源浪費(fèi)。程序正常運(yùn)行時(shí),軟件每隔一定的時(shí)間(小于定時(shí)器的溢出周期)給定時(shí)器置數(shù),即可預(yù)防溢出中斷而引起的誤復(fù)位。
看門(mén)狗運(yùn)用:看門(mén)狗可用來(lái)恢復(fù)系統(tǒng)的正常運(yùn)行,同時(shí)也是一種有效的監(jiān)視管理器(具有鎖定光驅(qū)、鎖定任何指定程序的作用,可用在家庭中防止小孩無(wú)節(jié)制地玩游戲、上網(wǎng)、看錄像等,具有很好的應(yīng)用價(jià)值)。
系統(tǒng)軟件“看門(mén)狗”的設(shè)計(jì)思路:
1、看門(mén)狗定時(shí)器T0的設(shè)置
在初始化程序塊中設(shè)置T0的工作方式,并開(kāi)啟中斷和計(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è)置“看門(mén)狗”定時(shí)器T0定時(shí)30ms(T0的初值為65536-30000=35536)。主控程序的每次循環(huán)都將刷新T0的初值。如程序進(jìn)入“死循環(huán)”,而T0的初值在30ms內(nèi)未被刷新,這時(shí)“看門(mén)狗”定時(shí)器T0將溢出并申請(qǐng)中斷。
3、設(shè)計(jì)T0溢出所對(duì)應(yīng)的中斷服務(wù)程序
此子程序只須一條指令,即在T0對(duì)應(yīng)的中斷向量地址(000BH)寫(xiě)入“無(wú)條件轉(zhuǎn)移”命令,把計(jì)算機(jī)拖回整個(gè)程序的第一行,對(duì)單片機(jī)重新進(jìn)行初始化并獲得正確的執(zhí)行順序。
推薦閱讀:
用有源鉗位正激轉(zhuǎn)換器閉環(huán)
特別推薦
- 是否存在有關(guān) PCB 走線電感的經(jīng)驗(yàn)法則?
- 一文看懂電壓轉(zhuǎn)換的級(jí)聯(lián)和混合概念
- 第12講:三菱電機(jī)高壓SiC芯片技術(shù)
- 準(zhǔn) Z 源逆變器的設(shè)計(jì)
- 貿(mào)澤電子持續(xù)擴(kuò)充工業(yè)自動(dòng)化產(chǎn)品陣容
- 低功耗嵌入式設(shè)計(jì)簡(jiǎn)介
- 如何通過(guò)基本描述找到需要的電容?
技術(shù)文章更多>>
- 瑞典名企Roxtec助力構(gòu)建安全防線
- 貿(mào)澤與Cinch聯(lián)手發(fā)布全新電子書(shū)深入探討惡劣環(huán)境中的連接應(yīng)用
- 第二十二屆中國(guó)國(guó)際軟件合作洽談會(huì)在成都順利舉行
- 混合信號(hào)示波器的原理和應(yīng)用
- 功率器件熱設(shè)計(jì)基礎(chǔ)(十)——功率半導(dǎo)體器件的結(jié)構(gòu)函數(shù)
技術(shù)白皮書(shū)下載更多>>
- 車(chē)規(guī)與基于V2X的車(chē)輛協(xié)同主動(dòng)避撞技術(shù)展望
- 數(shù)字隔離助力新能源汽車(chē)安全隔離的新挑戰(zhàn)
- 汽車(chē)模塊拋負(fù)載的解決方案
- 車(chē)用連接器的安全創(chuàng)新應(yīng)用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門(mén)搜索
電池管理系統(tǒng)
電磁蜂鳴器
電磁兼容
電磁爐危害
電動(dòng)車(chē)
電動(dòng)工具
電動(dòng)汽車(chē)
電感
電工電路
電機(jī)控制
電解電容
電纜連接器
電力電子
電力繼電器
電力線通信
電流保險(xiǎn)絲
電流表
電流傳感器
電流互感器
電路保護(hù)
電路圖
電路圖符號(hào)
電路圖知識(shí)
電腦OA
電腦電源
電腦自動(dòng)斷電
電能表接線
電容觸控屏
電容器
電容器單位