看門(mén)狗定時(shí)器的設計、工作原理及看門(mén)狗定時(shí)器的操作
看門(mén)狗定時(shí)器(WDT,Watch Dog TImer)是單片機的一個(gè)組成部分,它實(shí)際上是一個(gè)計數器,一般給看門(mén)狗一個(gè)數字,程序開(kāi)始運行后看門(mén)狗開(kāi)始倒計數。如果程序運行正常,過(guò)一段時(shí)間CPU應發(fā)出指令讓看門(mén)狗復位,重新開(kāi)始倒計數。如果看門(mén)狗減到0就認為程序沒(méi)有正常工作,強制整個(gè)系統復位。
本文引用地址:http://dyxdggzs.com/article/201710/365282.htm
為了給初學(xué)者一個(gè)系統的概念,先介紹一下看門(mén)狗的基本概念。當嵌入式系統運行時(shí)受到外部干擾或者系統錯誤,程序有時(shí)會(huì )出現“跑飛”,導致整個(gè)系統癱瘓。為了防止這一現象的發(fā)生,在對系統穩定性要求較高的場(chǎng)合往往要加入看門(mén)狗(WATCHDOG)電路??撮T(mén)狗的作用就是當系統“跑飛”而進(jìn)入死循環(huán)時(shí),恢復系統的運行。
看門(mén)狗定時(shí)器的功能作用
看門(mén)狗定時(shí)器(WDT,Watch Dog TImer)是單片機的一個(gè)組成部分,在單片機程序的調試和運行中都有著(zhù)重要的意義。它的主要功能是在發(fā)生軟件故障時(shí),通過(guò)使器件復位(如果軟件未將器件清零)將單片機復位。也可以用于將器件從休眠或空閑?! ?a class="contentlabel" href="http://dyxdggzs.com/news/listbylabel/label/看門(mén)狗定時(shí)器">看門(mén)狗定時(shí)器對微控制器提供了獨立的保護系統,當系統出現故障時(shí),在可選的超時(shí)周期之后,看門(mén)狗將以RESET信號作出響應,像x25045就可選超時(shí)周期為1.4秒、600毫秒、200毫秒三種。當你的程序死機時(shí),x25045就會(huì )使單片機復位。
大多數看門(mén)狗定時(shí)器IC產(chǎn)生一個(gè)單一的,有限的輸出脈沖持續時(shí)間當看門(mén)狗超時(shí)。這適用于觸發(fā)復位或中斷微處理器,但有些應用需要輸出(故障指示燈)的鎖存器。
考慮到安全性問(wèn)題,汽車(chē)電子系統需要監控電路監測故障容限或安全性??撮T(mén)狗定時(shí)器可理想滿(mǎn)足這類(lèi)需求,通過(guò)對微控制器正常工作條件下產(chǎn)生的周期脈沖進(jìn)行檢測,偵測電路或?C的失效狀態(tài),一旦發(fā)生故障可立即切換到備份/冗余系統。式喚醒。
看門(mén)狗工作原理
1. 其基本原理為:設本系統程序完整運行一周期的時(shí)間是Tp,看門(mén)狗的定時(shí)周期為T(mén)I,TI》Tp,在程序運行一周期后就修改定時(shí)器的計數值,只要程序正常運行,定時(shí)器就不會(huì )溢出,若由于干擾等原因使系統不能在Tp 時(shí)刻修改定時(shí)器的計數值,定時(shí)器將在Ti 時(shí)刻溢出,引發(fā)系統復位,使系統得以重新運行,從而起到監控作用。
2. 在一個(gè)完整的嵌入式系統或單片機小系統中通常都有看門(mén)狗定時(shí)器,且一般集成在處理器芯片中,看門(mén)狗實(shí)際上就是一個(gè)定時(shí)器,只是它在期滿(mǎn)后將自動(dòng)引起系統復位。
使用時(shí),WDT將遞增,直到溢出,或稱(chēng)“超時(shí)”。除非處于休眠或空閑模式,WDT 超時(shí)會(huì )強制器件復位。為避免WDT超時(shí)復位,用戶(hù)必須定期用PWRSAV 或CLRWDT 指令將看門(mén)狗定時(shí)器清零。如果WDT 在休眠或空閑模式下超時(shí),器件將喚醒并從PWRSAV 指令執行處繼續執行代碼。在上述兩種情況下,WDTO 位(RCON《4》)都會(huì )置1,表示該器件復位或喚醒事件是由于WDT超時(shí)引起的。如果WDT 將CPU從休眠或空閑模式喚醒,“休眠”狀態(tài)位(RCON《3》)或“空閑”狀態(tài)位(RCON《2》)也會(huì )置1,表示器件之前處于省電模式。
在正常操作期間,一次WDT超時(shí)溢出將產(chǎn)生一次器件復位。當器件處于休眠狀態(tài)時(shí),一次WDT超時(shí)溢出將喚醒器件,使其繼續正常操作(即稱(chēng)作WDT 喚醒)。對WDTE 設置位清零可以永久性地關(guān)閉WDT。
后分頻器分配完全是由軟件控制,即它可在程序執行期間隨時(shí)更改。
為避免發(fā)生不可預測的器件復位,當從Timer0 預分頻器的分配改為WDT 后分頻器的分配時(shí),必須執行下列指令序列。即使WDT 被禁止,也要執行這個(gè)指令序列。
由看門(mén)狗WDT引發(fā)系統復位的電路結構等效圖如圖所示。從該圖中可以看出,只有當狀態(tài)信號SLEEP=1,即單片機處于非睡眠狀態(tài)時(shí),看門(mén)狗超時(shí)溢出才會(huì )引發(fā)單片機的復位操作。而在單片機處于睡眠狀態(tài),即狀態(tài)信號SLEEP=0時(shí),看門(mén)狗超時(shí)溢出會(huì )喚醒單片機
看門(mén)狗就是一個(gè)用獨立時(shí)鐘源提供的脈沖進(jìn)行累加計數的計數器,無(wú)需任何外部元件。獨立的RC時(shí)鐘信號源是指RC振蕩器與OSC1(ULKIIN)引腳的外接RC振蕩器,OSC1和OSC2外接晶體振蕩器/陶瓷諧振器構成的單片機系統時(shí)鐘是分離的。這就意味著(zhù),即使單片機進(jìn)入系統時(shí)鐘停振的睡眠狀態(tài),監視定時(shí)器WDT仍然能夠運行。
在單片機執行程序期間,一次看門(mén)狗WDT超時(shí)溢出,將使單片機產(chǎn)生復位操作(稱(chēng)為WDT復位)。如果單片機處于睡眠狀態(tài),一次看門(mén)狗WDT超時(shí)溢出將使單片機被喚醒,恢復正常運行狀態(tài),并且繼續執行在進(jìn)入睡眠之前被擱置的程序(稱(chēng)為WDT喚醒)。
每次看門(mén)狗超時(shí)溢出,都會(huì )使得狀態(tài)寄存器STATUS中的了T0位被清0,以記錄曾經(jīng)發(fā)生的這次看門(mén)狗溢出事件,供作程序查詢(xún)判斷用。
即當WDTE=0時(shí),看門(mén)狗WDT將被永久禁止;當WDTE=1時(shí),看門(mén)狗WDT將被永久啟用。就是說(shuō),只要WDTE被定義成1,以后在用戶(hù)程序中將再也無(wú)法禁止看門(mén)狗的運行。
若想不讓看門(mén)狗WDT發(fā)生超時(shí)溢出,在用戶(hù)程序中只能不停地、周期性地將看門(mén)狗計時(shí)器清0,使它不會(huì )因計數到超過(guò)最大值而溢出。
看門(mén)狗計時(shí)器的計時(shí)周期取決于獨立RC振蕩源的頻率和計時(shí)器的寬度,同時(shí)在一定程度上受到工作電壓、環(huán)蟑溫度、制作工藝等因素的影響。
另外,看門(mén)狗的超時(shí)周期還可以借助于分頻器以及分頻器的分頻比,在一定范圍內改變和延長(cháng)。分頻器是否配置給看門(mén)狗使用,可以通過(guò)用戶(hù)程序定義選項寄存器OPTION KEG的PSA位進(jìn)行設置。
看門(mén)狗設計原理
在看門(mén)狗( watchdog timer),是一個(gè)定時(shí)器電路, 一般有一個(gè)輸入,叫喂狗(kicking the dog or service the dog),一個(gè)輸出到MCU的RST端,MCU正常工作的時(shí)候,每隔一段時(shí)間輸出一個(gè)信號到喂狗端,給WDT清零,如果超過(guò)規定的時(shí)間不喂狗,(一般在程序跑飛時(shí)),WDT 定時(shí)超過(guò),就會(huì )給出一個(gè)復位信號到MCU,使MCU復位。 防止MCU死機。 看門(mén)狗的作用就是防止程序發(fā)生死循環(huán),或者說(shuō)程序跑飛。 出于對單片機運行狀態(tài)進(jìn)行實(shí)時(shí)監測的考慮,產(chǎn)生了一種專(zhuān)門(mén)用于監測單片機程序運行狀態(tài)的芯片,俗稱(chēng)“看門(mén)狗”(watchdog))集成電路(MAX*9)的基礎上,該電路提供了響應的輸入脈沖流損失鎖存故障指示。該電路可以監控風(fēng)扇(上風(fēng)扇的轉速輸出計算),振蕩電路,或一個(gè)微處理器軟件執行。
一個(gè)簡(jiǎn)單的電路提供了響應的輸入脈沖流損失鎖存故障指示。在μP-supervisor/watchdog集成電路(MAX*9)的基礎上,該電路用于監測風(fēng)扇(在風(fēng)扇的轉速輸出計算),振蕩電路,或一個(gè)合適的微處理器軟件執行。
在上電期間,低電平有效復位仍然很低,直到VCC的穩定和復位超時(shí)時(shí)間到期。電容器C通過(guò)R,直到FET的柵極電壓達到閾值(電壓VTH),它開(kāi)啟了場(chǎng)效應管,使鎖存能力。為了防止誤觸發(fā),你應該設置RC延遲的時(shí)間遠遠超過(guò)了復位超時(shí)。
WDI輸入(引腳6)必須按切換電容器CSWT設立最低速率。如果這沒(méi)有發(fā)生,低電平有效復位變低,在LED指示燈,在連接和低拉復位,從而鎖定低電平復位。該電路仍然有效,直到你循環(huán)VCC或推開(kāi)關(guān)在此條件。要么關(guān)閉FET的行動(dòng),并允許重置變高。
為了監測風(fēng)扇開(kāi)漏測速信號,從世界發(fā)展指標10kΩ的連接到VCC(引腳8)上拉電阻器。由于風(fēng)扇需要一些時(shí)間來(lái)旋轉起來(lái),看門(mén)狗電路需要為一個(gè)短暫的延遲時(shí)間間隔停用。您可以通過(guò)將本延遲電容(C2)從對地復位。請注意,此延遲必須小于上述RC延遲,或低電平有效復位鎖存過(guò)早會(huì )較短。
對于一個(gè)風(fēng)扇監控,對CSWT值設置最大轉速脈沖周期根據公式5.06×106 × CSWT,其中在幾秒鐘內CSWT。如果轉速低于這個(gè)閾值時(shí),低電平有效復位輸出低和插銷(xiāo)。
看門(mén)狗定時(shí)器的操作
在正常操作期間,一次WDT 超時(shí)溢出將產(chǎn)生一次器件復位。如果器件處于休眠狀態(tài),一次WDT超時(shí)溢出將喚醒器件,使其繼續正常操作(即稱(chēng)作WDT 喚醒)。對WDTE 設置位清零可以永久性地關(guān)閉WDT。
后分頻器分配完全是由軟件控制,即它可在程序執行期間隨時(shí)更改。
為避免發(fā)生不可預測的器件復位,當從Timer0 預分頻器的分配改為WDT 后分頻器的分配時(shí),必須執行下列指令序列。即使WDT 被禁止,也要執行這個(gè)指令序列。
如圖所示是看門(mén)狗定時(shí)器的功能框圖。
S3C44B0X看門(mén)狗定時(shí)利用MCLK作為時(shí)鐘源,經(jīng)過(guò)8位的預分頻和4選1的2位分割之后得到所需頻率。預分頻值和頻率分割值在看門(mén)狗定時(shí)器控制寄存器WTCON中配置,有效的預分頻值范圍為0~28-1,頻率分割系數可選為16、32、64或128。使用下列公式計算看門(mén)狗定時(shí)頻率和每個(gè)定時(shí)器時(shí)鐘周期值。
twatchdog=1/MCLK/(預分頻值+1)/分頻系數
看門(mén)狗定時(shí)器使能后,WTDAT(看門(mén)狗定時(shí)器數據寄存器)不能自動(dòng)裝入WTCNT(看門(mén)狗定時(shí)計數寄存器)。因此,在看門(mén)狗定時(shí)器開(kāi)始工作前,初值必須寫(xiě)到看門(mén)狗定時(shí)計數寄存器WTCNT中。
評論