技術(shù)頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國(guó)傳動(dòng)網(wǎng) > 技術(shù)頻道 > 技術(shù)百科 > 看門狗其實(shí)就是這么回事(原理及設(shè)計(jì)思路)

看門狗其實(shí)就是這么回事(原理及設(shè)計(jì)思路)

時(shí)間:2018-12-24 14:58:17來(lái)源:Killoser

導(dǎo)語(yǔ):?看門狗定時(shí)器(WDT,WatchDogTimer)是單片機(jī)的一個(gè)組成部分,在單片機(jī)程序的調(diào)試和運(yùn)行中都有著重要的意義。它的主要功能是在發(fā)生軟件故障時(shí),通過(guò)使器件復(fù)位(如果軟件未將器件清零)將單片機(jī)復(fù)位。也可以用于將器件從休眠或空閑模式喚醒。

看門狗定時(shí)器(WDT,WatchDogTimer)是單片機(jī)的一個(gè)組成部分,在單片機(jī)程序的調(diào)試和運(yùn)行中都有著重要的意義。它的主要功能是在發(fā)生軟件故障時(shí),通過(guò)使器件復(fù)位(如果軟件未將器件清零)將單片機(jī)復(fù)位。也可以用于將器件從休眠或空閑模式喚醒。

有一個(gè)很形象的比喻

看門狗其實(shí)就是這么回事

比如說(shuō)你正在繞著一座小山裸奔?!绦虬搭A(yù)定流程執(zhí)行。

每次經(jīng)過(guò)山腳下的某個(gè)地方,你都給一條大狼狗一根肉骨頭。——喂狗。

奔著奔著,你奔叉了道,跑到了不該去的山頂?!绦蚺茱w了。

或者,你在裸奔的途中睡著了?!绦蛩罊C(jī)。

這時(shí),那條大狼狗,由于一直得不到喂食,餓瘋了,掙脫鎖鏈來(lái)追你?!撮T狗定時(shí)器溢出。

你被它一嚇,腳底一軟,從山上咕嚕咕嚕滾下來(lái)。起來(lái)一看,靠,又回到了出發(fā)地點(diǎn)。于是只好又從頭開(kāi)始裸奔?!绦驈?fù)位。

看門狗這東西是加強(qiáng)可靠性用的

看門狗是不隨主芯片時(shí)鐘的停止而停止的,它是一個(gè)獨(dú)立的計(jì)時(shí)單元,假如你在程序中使用并設(shè)置了看門狗寄存器,在系統(tǒng)加電后它就會(huì)啟動(dòng),若在指定周期內(nèi)沒(méi)有重置看門狗寄存器(也就是大家常說(shuō)的喂狗),系統(tǒng)將會(huì)重新啟動(dòng)。

這種設(shè)計(jì)為系統(tǒng)提供了極高的可靠性,即使系統(tǒng)死鎖,也可以及時(shí)的自動(dòng)恢復(fù)系統(tǒng)。

單片機(jī)

看門狗的原理

硬件看門狗是利用了一個(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系列來(lái)講,我們知道在51單片機(jī)中有兩個(gè)定時(shí)器,我們就可以用這兩個(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ù)位。對(duì)于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的中斷正常與否我們?cè)儆蒚0定時(shí)中斷子程序來(lái)監(jiān)視。這樣就夠成了一個(gè)循環(huán),T0監(jiān)視T1,T1監(jiān)視主程序,主程序又來(lái)監(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í)器使用.

看門狗使用注意

大多數(shù)51系列單片機(jī)都有看門狗,當(dāng)看門狗沒(méi)有被定時(shí)清零時(shí),將引起復(fù)位。這可防止程序跑飛。設(shè)計(jì)者必須清楚看門狗的溢出時(shí)間以決定在合適的時(shí)候,清看門狗。清看門狗也不能太過(guò)頻繁否則會(huì)造成資源浪費(fèi)。程序正常運(yùn)行時(shí),軟件每隔一定的時(shí)間(小于定時(shí)器的溢出周期)給定時(shí)器置數(shù),即可預(yù)防溢出中斷而引起的誤復(fù)位。

系統(tǒng)軟件"看門狗"的設(shè)計(jì)思路

1.看門狗定時(shí)器T0的設(shè)置。在初始化程序塊中設(shè)置T0的工作方式,并開(kāi)啟中斷和計(jì)數(shù)功能。系統(tǒng)Fosc=12MHz,T0為16位計(jì)數(shù)器,最大計(jì)數(shù)值為(2的10次方)-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í)行順序。

現(xiàn)在的絕大多數(shù)mcu都有看門狗

看門狗的主要操作一般有三種:啟動(dòng),觸發(fā)和停用.啟動(dòng)是指設(shè)置初始參數(shù)并調(diào)用中斷以使看門狗開(kāi)始工作;觸發(fā)是指在看門狗的記數(shù)器的數(shù)值減為零以前對(duì)其恢復(fù)初始值;停用是指調(diào)用中斷停止使用看門狗.在程序中應(yīng)選擇適當(dāng)?shù)牡胤綄?duì)其進(jìn)行觸發(fā)選擇時(shí)有許多講究,程序比較大時(shí)會(huì)比較難確定,但使用它確實(shí)有很多優(yōu)點(diǎn)不能說(shuō)不容易用所以就不用

幾乎所有的嵌入式操作系統(tǒng)都有看門狗任務(wù),它的主要功能是防止系統(tǒng)死掉或者陷入死循環(huán)。也就是每個(gè)一定的時(shí)間就會(huì)執(zhí)行看門狗任務(wù),以reset系統(tǒng).

喂狗的方式舉個(gè)例子:在os任務(wù)調(diào)度的時(shí)候順便觸發(fā)一下看門狗,這樣一旦任務(wù)長(zhǎng)時(shí)間停止調(diào)度系統(tǒng)就會(huì)復(fù)位,這個(gè)功能實(shí)現(xiàn)起來(lái)很簡(jiǎn)單,并不需要應(yīng)用程序多操什么心。

看門狗在啟動(dòng)的時(shí)候一般都會(huì)設(shè)置超時(shí)時(shí)間,超時(shí)時(shí)間按照一定的頻率遞減,減到零就復(fù)位,所以得定時(shí)將一個(gè)計(jì)時(shí)器更新到最大,防止減小到零。超時(shí)時(shí)間初始化時(shí)一般都是固定好的。

標(biāo)簽:

點(diǎn)贊

分享到:

上一篇:PLC梯形圖編程時(shí)必須注意的幾...

下一篇:嵌入式中通訊協(xié)議的設(shè)計(jì)

中國(guó)傳動(dòng)網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來(lái)源:中國(guó)傳動(dòng)網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國(guó)傳動(dòng)網(wǎng)(www.connectcrack.com)獨(dú)家所有。如需轉(zhuǎn)載請(qǐng)與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個(gè)人轉(zhuǎn)載使用時(shí)須注明來(lái)源“中國(guó)傳動(dòng)網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明其他來(lái)源的稿件,均來(lái)自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請(qǐng)保留稿件來(lái)源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。

網(wǎng)站簡(jiǎn)介|會(huì)員服務(wù)|聯(lián)系方式|幫助信息|版權(quán)信息|網(wǎng)站地圖|友情鏈接|法律支持|意見(jiàn)反饋|sitemap

傳動(dòng)網(wǎng)-工業(yè)自動(dòng)化與智能制造的全媒體“互聯(lián)網(wǎng)+”創(chuàng)新服務(wù)平臺(tái)

網(wǎng)站客服服務(wù)咨詢采購(gòu)咨詢媒體合作

Chuandong.com Copyright ?2005 - 2025 ,All Rights Reserved 深圳市奧美大唐廣告有限公司 版權(quán)所有
粵ICP備 14004826號(hào) | 營(yíng)業(yè)執(zhí)照證書 | 不良信息舉報(bào)中心 | 粵公網(wǎng)安備 44030402000946號(hào)