">
在由單片機(jī)構(gòu)成的微型計(jì)算機(jī)系統(tǒng)中,由于單片機(jī)的工作常常會(huì)受到來(lái)自外界電磁場(chǎng)的干擾,造成程序的跑飛,而陷入死循環(huán),程序的正常運(yùn)行被打斷,由單片機(jī)控制的系統(tǒng)無(wú)法繼續(xù)工作,會(huì)造成整個(gè)系統(tǒng)的陷入停滯狀態(tài),發(fā)生不可預(yù)料的后果,所以出于對(duì)單片機(jī)運(yùn)行狀態(tài)進(jìn)行實(shí)時(shí)監(jiān)測(cè)的考慮,便產(chǎn)生了一種專(zhuān)門(mén)用于監(jiān)測(cè)單片機(jī)程序運(yùn)行狀態(tài)的芯片,俗稱(chēng)"看門(mén)狗"(watchdog)。
其次,看門(mén)狗的工作原理是什么?
在系統(tǒng)運(yùn)行以后也就啟動(dòng)了看門(mén)狗的計(jì)數(shù)器,看門(mén)狗就開(kāi)始自動(dòng)計(jì)數(shù),如果到了一定的時(shí)間還不去清看門(mén)狗,那么看門(mén)狗計(jì)數(shù)器就會(huì)溢出從而引起看門(mén)狗中斷,造成系統(tǒng)復(fù)位。所以在使用有看門(mén)狗的芯片時(shí)要注意清看門(mén)狗(俗稱(chēng)喂狗)。
AVR中的定時(shí)器和其他所有的單片機(jī)定時(shí)器大同小異,看門(mén)狗的作用也是如此,在大多數(shù)項(xiàng)目中,開(kāi)發(fā)人員一般都是為了省事而將看門(mén)狗直接靜默,但是這樣一旦出現(xiàn)外部影響或者一些非人力因素導(dǎo)致的跑飛、程序死機(jī),會(huì)導(dǎo)致單片機(jī)不能再自動(dòng)的重啟。
在一般的使用中,我們?cè)趇nit.c中對(duì)看門(mén)狗進(jìn)行初始化//一般不建議直接靜默,而應(yīng)該設(shè)置一個(gè)看門(mén)狗定時(shí)器的閾值
void wdtinit(void)
{
#asm("wdr")
WDTCR=0x1F;
WDTCR=0x0F;
}
然后在主函數(shù)進(jìn)行一個(gè)喂狗操作。
void main()
{
...
while(1)
{
wdtflag=1; //喂狗
...
}
}
的確,這樣一般的情況下都可以避免單片機(jī)的非正常死機(jī)。但是在高低溫實(shí)驗(yàn)(見(jiàn)博主前文)或者其他的時(shí)候,不可避免的會(huì)導(dǎo)致單片機(jī)的異常重啟,尤其是在程序運(yùn)行時(shí)間大致等于看門(mén)狗定時(shí)器的情況下。
除了在中斷進(jìn)行喂狗,一個(gè)比較好的辦法就是在定時(shí)器中進(jìn)行喂狗操作,這樣可以避免中斷函數(shù)進(jìn)入后子函數(shù)太長(zhǎng)而導(dǎo)致程序運(yùn)行時(shí)間大于看門(mén)狗定時(shí)器的時(shí)間的情況
interrupt [TIM1_OVF] void timer1_ovf_isr(void)
{
...
wdtflag=1;
...
}
上海紫卓電子科技有限公司
地址:上海市嘉定工業(yè)區(qū)葉城路925號(hào)B區(qū)4幢J
網(wǎng)址:fashioncenter.cn
電話(huà):021-31007998
傳真:021-31007998
郵件:569998567@qq.com
在線咨詢(xún):
569998567
致力成為優(yōu)秀的IC供應(yīng)配單專(zhuān)家及IC代理商
竭力為客戶(hù)提供一站式電子元器件采購(gòu)及IC配套服務(wù)
上海紫卓電子科技有限公司 版權(quán)所有 未經(jīng)授權(quán)禁止復(fù)制或鏡像
CopyRight 2020-2025 fashioncenter.cn All rights reserved