導航:首頁 > 操作系統 > s12g單片機看門狗啟動與停止

s12g單片機看門狗啟動與停止

發布時間:2022-09-03 03:04:40

『壹』 51單片機看門狗問題

在程序初始化中向看門狗寄存器(WDTRST地址是0A6H)中先寫入01EH,再寫入0E1H。即可激 活看門狗。
ORG 0000H
LJMP begin
Begin:
MOV 0A6H,#01EH ;先送1E
MOV 0A6H,#0E1H ;後送E1
;在程序初始化中激活看門狗。
……
……
For:
……
MOV 0A6H,#01EH ;先送1E
MOV 0A6H,#0E1H ;後送E1
;喂狗指令
……
LJMP For

在C語言中要增加一個聲明語句。 在AT89X51.h聲明文件中增加一行 sfr WDTRST = 0xA6;
Main()
{
WDTRST=0x1E;
WDTRST=0xE1;//初始化看門狗。
While (1)
{
WDTRST=0x1E;
WDTRST=0xE1;//喂狗指令
}
}

其他參考代碼:

AJMP MAIN ;匯編

MAIN:

;啟動看門狗
Mov 0A6H,#01EH ;先送1E
Mov 0A6H,#0E1H ;後送E1

;主程序
START:

ACALL WDT ;調用復位看門狗子程序

AJMP START

;主程序

;復位看門狗子程序
WDT:
Mov 0A6H,#01EH ;先送1E
Mov 0A6H,#0E1H ;後送E1
RET

END

注意事項:
1. 89S51的看門狗必須由程序激活後才開始工作。所以必須保證CPU有可靠的上電復位。否則看門狗也無法工作。
2. 看門狗使用的是CPU的晶振。在晶振停振的時候看門狗也無效。
3. 89S51隻有14位計數器。在16383個機器周期內必須至少喂狗一次。而且這個時間是固定的,無法更改。當晶振為12M時每16個毫秒需喂狗一次。還可利用定時器把看門狗的喂狗時間延長幾秒至幾分鍾。

你不往寄存器寫值,默認是沒有開看門狗的,你就不用管了

『貳』 單片機看門狗定時器工作原理和應用

看門狗 在由單片機構成的微型計算機系統中,由於單片機的工作常常會受到來自外界電磁場的干擾,造成程序的跑飛,而陷入死循環,程序的正常運行被打斷,由單片機控制的系統無法繼續工作,會造成整個系統的陷入停滯狀態,發生不可預料的後果,所以出於對單片機運行狀態進行實時監測的考慮,便產生了一種專門用於監測單片機程序運行狀態的晶元,俗稱"看門狗"(watchdog)
看門狗電路的應用,使單片機可以在無人狀態下實現連續工作,其工作原理是:看門狗晶元和單片機的一個I/O引腳相連,該I/O引腳通過程序控制它定時地往看門狗的這個引腳上送入高電平(或低電平),這一程序語句是分散地放在單片機其他控制語句中間的,一旦單片機由於干擾造成程序跑飛後而陷入某一程序段 進入死循環狀態時,寫看門狗引腳的程序便不能被執行,這個時候,看門狗電路就會由於得不到單片機送來的信號,便在它和單片機復位引腳相連的引腳上送出一個復位信號,使單片機發生復位,即程序從程序存儲器的起始位置開始執行,這樣便實現了單片機的自動復位.
看門狗,又叫 watchdog timer,是一個定時器電路, 一般有一個輸入,叫喂狗(kicking the dog or service the dog),一個輸出到MCU的RST端,MCU正常工作的時候,每隔一端時間輸出一個信號到喂狗端,給 WDT 清零,如果超過規定的時間不喂狗,(一般在程序跑飛時),WDT 定時超過,就回給出一個復位信號到MCU,是MCU復位. 防止MCU死機. 看門狗的作用就是防止程序發生死循環,或者說程序跑飛。
工作原理:在系統運行以後也就啟動了看門狗的計數器,看門狗就開始自動計數,如果到了一定的時間還不去清看門狗,那麼看門狗計數器就會溢出從而引起看門狗中斷,造成系統復位。所以在使用有看門狗的晶元時要注意清看門狗。
硬體看門狗是利用了一個定時器,來監控主程序的運行,也就是說在主程序的運行過程中,我們要在定時時間到之前對定時器進行復位如果出現死循環,或者說PC指針不能回來。那麼定時時間到後就會使單片機復位。常用的WDT晶元如MAX813 ,5045, IMP 813等,價格4~10元不等.
軟體看門狗技術的原理和這差不多,只不過是用軟體的方法實現,我們還是以51系列來講,我們知道在51單片機中有兩個定時器,我們就可以用這兩個定時器來對主程序的運行進行監控。我們可以對T0設定一定的定時時間,當產生定時中斷的時候對一個變數進行賦值,而這個變數在主程序運行的開始已經有了一個初值,在這里我們要設定的定時值要小於主程序的運行時間,這樣在主程序的尾部對變數的值進行判斷,如果值發生了預期的變化,就說明T0中斷正常,如果沒有發生變化則使程序復位。對於T1我們用來監控主程序的運行,我們給T1設定一定的定時時間,在主程序中對其進行復位,如果不能在一定的時間里對其進行復位,T1 的定時中斷就會使單片機復位。在這里T1的定時時間要設的大於主程序的運行時間,給主程序留有一定的的裕量。而T1的中斷正常與否我們再由T0定時中斷子程序來監視。這樣就夠成了一個循環,T0監視T1,T1監視主程序,主程序又來監視T0,從而保證系統的穩定運行。
51 系列有專門的看門狗定時器,對系統頻率進行分頻計數,定時器溢出時,將引起復位.看門狗可設定溢出率,也可單獨用來作為定時器使用.
凌陽61的看門狗比較單一,一個是時間單一,第二是功能在實際的使用中只需在循環當中加入清狗的指令就OK了。
C8051Fxxx單片機內部也有一個21位的使用系統時鍾的定時器,該定時器檢測對其控制 寄存器的兩次特定寫操作的時間間隔。如果這個時間間隔超過了編程的極限值,將產生一個WDT復位。
--------------------------------------------------------------------------------
看門狗使用注意:大多數51 系列單片機都有看門狗,當看門狗沒有被定時清零時,將引起復位。這可防止程序跑飛。設計者必須清楚看門狗的溢出時間以決定在合適的時候,清看門狗。清看門狗也不能太過頻繁否則會造成資源浪費。程序正常運行時,軟體每隔一定的時間(小於定時器的溢出周期)給定時器置數,即可預防溢出中斷而引起的誤復位。
看門狗運用:看門狗是恢復系統的正常運行及有效的監視管理器(具有鎖定光碟機,鎖定任何指定程序的作用,可用在家庭中防止小孩無節制地玩游戲、上網、看錄像)等具有很好的應用價值.
系統軟體"看門狗"的設計思路:
1.看門狗定時器T0的設置。在初始化程序塊中設置T0的工作方式,並開啟中斷和計數功能。系統Fosc=12 MHz,T0為16位計數器,最大計數值為(2的16次方)-1=65 535,T0輸入計數頻率是.Fosc/12,溢出周期為(65 535+1)/1=65 536(μs)。
2.計算主控程序循環一次的耗時。考慮系統各功能模塊及其循環次數,本系統主控製程序的運行時間約為16.6 ms。系統設置"看門狗"定時器T0定時30 ms(T0的初值為65 536-30 000=35 536)。主控程序的每次循環都將刷新T0的初值。如程序進入"死循環"而T0的初值在30 ms內未被刷新,這時"看門狗"定時器T0將溢出並申請中斷。
3.設計T0溢出所對應的中斷服務程序。此子程序只須一條指令,即在T0對應的中斷向量地址(000BH)寫入"無條件轉移"命令,把計算機拖回整個程序的第一行,對單片機重新進行初始化並獲得正確的執行順序

『叄』 請教STC12C5A60S2單片機看門狗如何使用

初始化時候開啟關門狗,設定看門狗定時器分頻時間
然後在看門狗溢出時間前將看門狗重新計數即可。這就要求程序設計者了解程序執行耗時。
如按照手冊來啟動看門狗,設置32分頻。在12.0000MHz晶振下時間約1.0485S
WTD_CONTR
=
0X24;
…程序語句(運行時間少於1.0485S)…
WTD_CONTR
=
0X24;
…程序語句(運行時間少於1.0485S)…
WTD_CONTR
=
0X24;

『肆』 求大神 stc15w4k48s461S4單片機,啟動看門狗後,要怎麼關閉看門狗

遇到一樣的問題,上網找了好久沒有這方面的權威答案,於是今天下午直接打電話到STC公司問技術人員,最後工程師給的答案是:STC單片機的看門狗一旦開啟後就不能關閉!!!不能關閉!!!這是官方給的答案,只可以喂狗,但不能關閉哦!!!

『伍』 STC單片機的看門狗在一旦啟動了,不能在關閉嗎(程序中)百度查資料看到的,謝謝了,本人菜鳥

清零看門狗允許位即可。給你看個圖片,詳細資料看下具體型號的晶元資料。

『陸』 STM32的獨立開門狗怎麼啟用和停止

STM32 的獨立看門狗由內部專門的 40Khz 低速時鍾驅動,即使主時鍾發生故障,它也仍然有效。
看門狗的原理:單片機系統在外界的干擾下會出現程序跑飛的現象導致出現死循環,看門狗電路就是為了避免這種情況的發生。看門狗的作用就是在一定時間內(通過定時計數器實現)沒有接收喂狗信號(表示 MCU 已經掛了),便實現處理器的自動復位重啟(發送復位信號) 。
在鍵值寄存器(IWDG_KR)中寫入 0xCCCC,開始啟用獨立看門狗;此時計數器開始從其復位值 0xFFF 遞減計數。當計數器計數到末尾 0x000 時,會產生一個復位信號(IWDG_RESET)。無論何時,只要鍵寄存器 IWDG_KR 中被寫入 0xAAAA, IWDG_RLR 中的值就會被重新載入到計數器中從而避免產生看門狗復位 。
IWDG_PR 和 IWDG_RLR 寄存器具有防寫功能。要修改這兩個寄存器的值,必須先向IWDG_KR 寄存器中寫入 0x5555。將其他值寫入這個寄存器將會打亂操作順序,寄存器將重新被保護。重裝載操作(即寫入 0xAAAA)也會啟動防寫功能。
只要對以上三個寄存器進行相應的設置,我們就可以啟動 STM32 的獨立看門狗,啟動過程可以按如下步驟實現(獨立看門狗相關的庫函數和定義分布在文件 stm32f10x_iwdg.h 和stm32f10x_iwdg.c 中) :
1)取消寄存器防寫(向 IWDG_KR 寫入 0X5555)
通過這步,我們取消 IWDG_PR 和 IWDG_RLR 的防寫,使後面可以操作這兩個寄存器,設置 IWDG_PR 和 IWDG_RLR 的值。這在庫函數中的實現函數是:
IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
2)設置獨立看門狗的預分頻系數和重裝載值
設置看門狗的分頻系數的函數是:
void IWDG_SetPrescaler(uint8_t IWDG_Prescaler); //設置 IWDG 預分頻值
設置看門狗的重裝載值的函數是:
void IWDG_SetReload(uint16_t Reload); //設置 IWDG 重裝載值
設置好看門狗的分頻系數 prer 和重裝載值就可以知道看門狗的喂狗時間 (也就是看門狗溢出時間) ,該時間的計算方式為:
Tout=((4×2^prer) ×rlr) /40
其中 Tout 為看門狗溢出時間(單位為 ms) ;prer 為看門狗時鍾預分頻值(IWDG_PR 值),范圍為 0~7;rlr 為看門狗的重裝載值(IWDG_RLR 的值) ;
比如我們設定 prer 值為 4, rlr 值為 625,那麼就可以得到 Tout=64×625/40=1000ms,這樣,看門狗的溢出時間就是 1s,只要你在一秒鍾之內,有一次寫入 0XAAAA 到 IWDG_KR,就不會導致看門狗復位(當然寫入多次也是可以的)。這里需要提醒大家的是,看門狗的時鍾不是准確的 40Khz,所以在喂狗的時候,最好不要太晚了,否則,有可能發生看門狗復位。
3)重載計數值喂狗(向 IWDG_KR 寫入 0XAAAA)
庫函數裡面重載計數值的函數是:
IWDG_ReloadCounter(); //按照 IWDG 重裝載寄存器的值重裝載 IWDG 計數器
通過這句,將使 STM32 重新載入 IWDG_RLR 的值到看門狗計數器裡面。 即實現獨立看門狗的喂狗操作。
4) 啟動看門狗(向 IWDG_KR 寫入 0XCCCC)
庫函數裡面啟動獨立看門狗的函數是:
IWDG_Enable(); //使能 IWDG
通過這句,來啟動 STM32 的看門狗。注意 IWDG 在一旦啟用,就不能再被關閉!想要關閉,只能重啟,並且重啟之後不能打開 IWDG,否則問題依舊,所以在這里提醒大家,如果不用 IWDG 的話,就不要去打開它,免得麻煩。

『柒』 單片機的看門狗怎麼用

復位會清除埠和特殊寄存器,不會影響RAM,與斷電不同。

『捌』 STC單片機如何禁止看門狗

上電 時 只要 不給看門狗初始化,就不會啟動看門狗,啟動看門狗後就不能關閉。

閱讀全文

與s12g單片機看門狗啟動與停止相關的資料

熱點內容
如何看伺服器幾核 瀏覽:262
找酒吧設計公司用什麼app 瀏覽:680
基本初等函數的導數公式及導數的運演算法則 瀏覽:915
為什麼小米app啟動廣告關不了 瀏覽:877
空調壓縮機一直不停 瀏覽:511
養殖系統開發源碼 瀏覽:82
pdf的目錄 瀏覽:406
光遇安卓如何一個人拍視頻 瀏覽:277
怨女pdf 瀏覽:708
扭曲伺服器什麼時候開 瀏覽:23
加密貨幣換平台 瀏覽:610
手機內存壓縮軟體 瀏覽:33
生成樹是否與遍歷演算法有關 瀏覽:728
python強化學習迷宮 瀏覽:450
老包子解壓視頻 瀏覽:885
伺服器注冊是什麼意思 瀏覽:419
程序員群體焦慮如何破局 瀏覽:585
程序員在廣州上班 瀏覽:803
androidlinuxadt 瀏覽:512
廣聯達軟體加密鎖原裝晶元 瀏覽:338