「看門狗」概念及其應用

2022-12-20 18:21:05 字數 3014 閱讀 2784

在由微控制器構成的系統中,由於微控制器的工作有可能會受到來自外界電

磁場的干擾,造成程式的跑飛,從而陷入死迴圈,程式的正常執行被打斷,由微控制器控制的系統便無法繼續工作,這樣會造成整個系統陷入停滯狀態,發生不可預料的後果,所以出於對微控制器執行狀態進行實時監測的考慮,便產生了一種專門用於監測微控制器程式執行狀態的晶元,俗稱「看門狗」(watchdog)。

加入看門狗電路的目的是使微控制器可以在無人狀態下實現連續工作,其

工作過程如下:看門狗晶元和微控制器的乙個i/o引腳相連,該i/o引腳通過微控制器的程式控制,使它定時地往看門狗晶元的這個引腳上送入高電平(或低電平),這一程式語句是分散地放在微控制器其他控制語句中間的,一旦微控制器由於干擾造成程式跑飛後而陷入某一程式段進入死迴圈狀態時,給看門狗引腳送電平的程式便不能被執行到,這時,看門狗電路就會由於得不到微控制器送來的訊號,便將它和微控制器復位引腳相連的引腳上送出乙個復位訊號,使微控制器發生復位,從而微控制器將從程式儲存器的起始位置重新開始執行程式,這樣便實現了微控制器的自動復位。

通常看門狗電路需要乙個專門的看門狗晶元連線微控制器來實現,不過這

樣會給電路設計帶來複雜,stc微控制器內部自帶有看門狗,通過對相應特殊功能暫存器的設定就可實現看門狗的應用,stc89系列微控制器內部有乙個專門的看門狗定時器暫存器,watch dog timer暫存器,其相應功能見下個知識點。

看門狗定時器暫存器(wdt_contr)

stc微控制器看門狗定時器暫存器在特殊功能暫存器中的位元組位址為e1h,不能位定址,該暫存器用來管理stc微控制器的看門狗控制部分,

包括啟停看門狗、設定看門狗溢位時間等。微控制器復位時該暫存器不一定全部被清0,在stc**程式軟體介面上可設定復位關看門狗或只有停電關看門狗的選擇,大家根據需要可做出適合自己設計系統的選擇。其各位的定義如表4.

2.1所示。

表1看門狗定時器暫存器(wdt_contr)

位序號位符號

----

en_wdtclr_wdt

idle_wdt

ps2ps1

ps0d7d6

d5d4

d3d2

d1d0

en_wdt:看門狗允許位,當設定為「1」時,啟動看門狗。

clr_wdt:看門狗清「0」位,當設為「1」時,看門狗定時器將重新

自動清「0」此位。

計數。硬體

idle_wdt:看門狗「idle」模式位,當設定為「1」時,看門狗定時

的「空閒模式」計數,當清「0」該位時,看門狗定時器在單片

時不計數。

器在微控制器

機的「空閒模式」

ps2、ps1、ps0:看門狗定時器預分頻值,不同值對應預分頻數如表4.2.2

所示。表2 12m晶振看門狗定時器預分頻值

ps200001111

ps100110011

ps001010101

預分頻數

248163264128256

看門狗溢位時間

65.5ms131.0ms262.1ms524.2ms1.0485s2.0971s4.1943s8.3886s

看門狗溢位時間與預分頻數有直接的關係,公式如下:看門狗溢位時間=(n×預分頻數×32768)/晶振頻率

上式中n表示stc微控制器的時鐘模式,stc微控制器有兩種時鐘模式:

單倍速,也就是12時鐘模式,這種時鐘模式下,stc微控制器與其它公司51微控制器具有相同的機器週期,即12個振盪週期為乙個機器週期;另一種為雙倍速,又被稱為6時鐘模式,在這種時鐘模式下,stc微控制器比其它公司的51微控制器執行速度要快一倍,關於單倍速與雙倍速的設定在**程式軟體介面上有設定選擇,大家可自行**測試程式執行速度。預分頻數的值由ps2、ps1和ps0的組合確定,如表4.2.

2所示。晶振頻率即為當前系統的時鐘頻率。

下面我們通過兩個例子來進一步講解使用看門狗和不使用看門狗時程式運

行的區別,由於stc微控制器的高抗干擾特點,至今我還未曾遇到過程式跑飛的情況,因此我們也很難人為製造出使微控制器程式跑亂的情況,下面的程式演示利用看門狗的溢位時間來使程式自動復位執行。

【例】:在tx-1c實驗板上實現如下描述:程式啟動後設定看門狗溢位時間

為2秒左右,然後點亮第乙個發光二極體,稍延時一會,然後熄滅發光二極體,使程式進入等待死迴圈狀態,並且在死迴圈中大約每隔1秒餵狗一次,看程式執行是否正常。

新建檔案程式**如下:

#include <>#define uchar unsigned char#define uint unsigned intsfr wdt_contr=0xe1;sbit led1=p1^0;

//52系列微控制器標頭檔案

void delayms(uint xms)

for(j=110;j>0;j--);

void main(){}

wdt_contr=0x35;led1=0;delayms(500);led1=1;while(1){}

delayms(1000);wdt_contr=0x35;

分析:(1)「sfr wdt_contr=0xe1;」定義stc微控制器中新加入的看門狗暫存器,因

為標頭檔案中沒有對該暫存器的定義,以後要定義其它新的暫存器時方法相同,當然也可以寫在標頭檔案中。

(2)程式開始後,點亮發光二極體後延時約500ms後再熄滅,這裡延時不可過

長,若兩次餵狗之間程式執行的總時間超過看門狗的溢位時間,看門狗將復位微控制器,大家可調節這個延時時間看實際演示效果。

(3)餵狗時使用和設定看門狗暫存器同樣的語句,只要看門狗暫存器中的

clr_wdt位被置1,看門狗定時器將重新計數,clr_wdt位被置1後,由硬體自動將其清零。

(4)演示結果表現為發光二極體點亮後,馬上熄滅,再不會點亮,這說明程式

沒有被復位,始終停止在while(1)迴圈中,看門狗處於被正常餵狗的情況下。

【例】只需把while(1)迴圈中的「wdt_contr=0x35;」這句刪掉,演示結果

為小燈不停的閃爍,因為有了看門狗的作用,當看門狗定時器溢位時,使微控制器復位從頭重新執行程式,所以小燈閃爍。

在應用看門狗時,需要在整個大程式的不同位置餵狗,每兩次餵狗之間的時間間隔一定

不能小於看門狗定時器的溢位時間,否則程式將會不停的復位。

對數概念及其運算

知識點1 對數 1.對數的定義 如果的次冪等於,那麼數叫做以為底的對數,記作其中叫做對數的底數,叫做真數。在對數函式中,的取值範圍是,的取值範圍是,的取值範圍是。注意 根據對數的定義可知 1 零和負數沒有對數,真數為正數,即 2 在對數中必須強調底數且 2.常用對數 1 定義 以10為底的對數叫做常...

X Ray的概念及其作用

倫琴射線,又稱 x射線 它是一種波長很短的電磁輻射,其波長約為 20 0.06 10 8厘公尺之間。倫琴射線具有很高的穿透本領,能透過許多對可見光不透明的物質,如墨紙 木料等。這種肉眼看不見的射線可以使很多固體材料發生可見的螢光,使照相底片感光以及空氣電離等效應,波長越短的x射線能量越大,叫做硬x射...

1 函式概念及其表示

1 函式的概念 一 知識梳理 1.函式定義 設a b是非空的數集,如果按照某個確定的對應關係,使對於集合a中的在集合b中都有和它對應,那麼就稱為從集合a到集合b的乙個函式,記作 2.函式的定義域和值域 從集合a到集合b的乙個函式,其中叫做自變數叫做函式的定義域 叫做函式值,函式值的集合叫做函式的 值...