評論(0

看門狗計時器

標籤: 暫無標籤

看門狗計時器:是用來防止萬一單片機程序出錯造成重大損失的計時器。防錯的原理很簡單,它在硬體上就是一個定時器,當它溢出的時候就會讓單片機強制複位使程序重新開始執行。正常的情況下是不能讓它溢出的,所以在程序上每隔一段時間要給他置一次值(俗稱喂狗),只要程序中正常給它喂他就不會溢出。

1 看門狗計時器 -定義

看門狗計時器看門狗記時器原理圖

看門狗記時器看門狗定時器是單片機的一個組成部分,在單片機程序的調試和運行中都有著重要的意義。

看門狗記時器(WDT,Watch Dog Timer)實際上是一個計數器,是一個用獨立時鐘源提供的脈衝進行累加計數的計數器,無需任何外部元件。一般給看門狗一個大數,程序開始運行后看門狗開始倒計數。如果程序運行正常,過一段時間CPU應發出指令讓看門狗複位,重新開始倒計數。如果看門狗減到0就認為程序沒有正常工作,強制整個系統複位。在單片機執行程序期間,一次看門狗WDT超時溢出,將使單片機產生複位操作(稱為WDT複位)。如果單片機處於睡眠狀態,一次看門狗WDT超時溢出將使單片機被喚醒,恢復正常運行狀態,並且繼續執行在進入睡眠之前被擱置的程序(稱為WDT喚醒)。

  每次看門狗超時溢出,都會使得狀態寄存器STATUS中的了T0位被清0,以記錄曾經發生的這次看門狗溢出事件,供作程序查詢判斷用。

  即當WDTE=0時,看門狗WDT將被永久禁止;當WDTE=1時,看門狗WDT將被永久啟用。就是說,只要WDTE被定義成1,以後在用戶程序中將再也無法禁止看門狗的運行。

  若想不讓看門狗WDT發生超時溢出,在用戶程序中只能不停地、周期性地將看門狗計時器清0,使它不會因計數到超過最大值而溢出。

  看門狗計時器的計時周期取決於獨立RC振蕩源的頻率和計時器的寬度,同時在一定程度上受到工作電壓、環蟑溫度、製作工藝等因素的影響。

  另外,看門狗的超時周期還可以藉助於分頻器以及分頻器的分頻比,在一定範圍內改變和延長。分頻器是否配置給看門狗使用,可以通過用戶程序定義選項寄存器OPTION KEG的PSA位進行設置。



2 看門狗計時器 -工作原理

使能時,WDT將遞增,直到溢出,或稱「超時」。除非處於休眠或空閑模式,WDT 超時會強制器件複位。為避免WDT 超時複位,用戶必須定期用PWRSAV 或CLRWDT 指令將看門狗定時器清零。如果WDT 在休眠或空閑模式下超時,器件將喚醒並從PWRSAV 指令執行處繼續執行代碼。在上述兩種情況下,WDTO 位(RCON<4>)都會置1,表示該器件複位或喚醒事件是由於WDT超時引起的。如果WDT 將CPU從休眠或空閑模式喚醒,「休眠」狀態位(RCON<3>)或「空閑」狀態位(RCON<2>)也會置1,表示器件之前處於省電模式。

3 看門狗計時器 -功能作用

看門狗計時器可以在你的程序陷入死循環的時候,讓單片機複位而不用整個系統斷電,從而保護你的硬體電路。看門狗定時器對微控制器提供了獨立的保護系統,當系統出現故障時,在可選的超時周期之後,看門狗將以RESET信號作出響應,像x25045就可選超時周期為1.4秒、600毫秒、200毫秒三種。當你的程序死機時,x25045就會使單片機複位。
  
大多數看門狗定時器IC產生一個單一的,有限的輸出脈衝持續時間當看門狗超時。這適用於觸發複位或中斷微處理器,但有些應用需要輸出(故障指示燈)的鎖存器。
  
考慮到安全性問題,汽車電子系統需要監控電路監測故障容限或安全性。看門狗定時器可理想滿足這類需求,通過對微控制器正常工作條件下產生的周期脈衝進行檢測,偵測電路或IC的失效狀態,一旦發生故障可立即切換到備份/冗餘系統。

4 看門狗計時器 -設計

看門狗計時器圖1
圖1在看門狗(看門狗,又叫 watchdog timer,是一個定時器電路, 一般有一個輸入,叫喂狗(kicking the dog or service the dog),一個輸出到MCU的RST端,MCU正常工作的時候,每隔一端時間輸出一個信號到喂狗端,給 WDT清零,如果超過規定的時間不喂狗,(一般在程序跑飛時),WDT 定時超過,就會給出一個複位信 號到MCU,是MCU複位. 防止MCU死機. 看門狗的作用就是防止程序發生死循環,或者說程序跑飛。 出於對單片機運行狀態進行實時監測的考慮,產生了一種專門用於監測單片機程序運行狀態的晶元,俗稱"看門狗"(watchdog))集成電路(MAX*9)的基礎上,該電路提供了響應的輸入脈衝流損失鎖存故障指示。該電路可以監控風扇(上風扇的轉速輸出計算),振蕩電路,或一個微處理器軟體執行。
  
大多數看門狗定時器IC產生一個單一的,有限的輸出脈衝持續時間當看門狗超時。這適用於觸發複位或中斷微處理器,但有些應用需要輸出(故障指示燈)的鎖存器。一個簡單的電路(圖1)提供了響應的輸入脈衝流損失鎖存故障指示。在μP-supervisor/watchdog集成電路(MAX*9)的基礎上,該電路用於監測風扇(在風扇的轉速輸出計算),振蕩電路,或一個合適的微處理器軟體執行。
  
在上電期間,低電平有效複位仍然很低,直到VCC的穩定和複位超時時間到期。電容器C通過R,直到FET的柵極電壓達到閾值(電壓VTH),它開啟了場效應管,使鎖存能力。為了防止誤觸發,你應該設置RC延遲的時間遠遠超過了複位超時。
  
WDI輸入(引腳6)必須按切換電容器CSWT設立最低速率。如果這沒有發生,低電平有效複位變低,在LED指示燈,在連接和低拉複位,從而鎖定低電平複位。該電路仍然有效,直到你循環VCC或推開關在此條件。要麼關閉FET的行動,並允許重置變高。
  
為了監測風扇開漏測速信號,從世界發展指標10kΩ的連接到VCC(引腳8)上拉電阻器。由於風扇需要一些時間來旋轉起來,看門狗電路需要為一個短暫的延遲時間間隔停用。您可以通過將本延遲電容(C2)從對地複位。請注意,此延遲必須小於上述RC延遲,或低電平有效複位鎖存過早會較短。
  
對於一個風扇監控,對CSWT值設置最大轉速脈衝周期根據公式5.06×106 × CSWT,其中在幾秒鐘內CSWT。如果轉速低於這個閾值時,低電平有效複位輸出低和插銷。

5 看門狗計時器 -操作

在正常操作期間,一次WDT 超時溢出將產生一次器件複位。當器件處於休眠狀態時,一次WDT超時溢出將喚醒器件,使其繼續正常操作(即稱作WDT 喚醒)。對WDTE 設置位清零可以永久性地關閉WDT。
  
後分頻器分配完全是由軟體控制,即它可在程序執行期間隨時更改。為避免發生不可預測的器件複位,當從Timer0 預分頻器的分配改為WDT 後分頻器的分配時,必須執行下列指令序列。即使WDT 被禁止,也要執行這個指令序列。

相關評論

同義詞:暫無同義詞