日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機 > 單片機
[導(dǎo)讀]AVR單片機系列(例如,ATMEGA168等)使用增強功能的看門狗(Enhanced Watchdog Timer),與原來的看門狗相比較,除了有相同復(fù)位的功能以外,還增加了中斷的功能設(shè)計時。使用看門狗的中斷功能,可以實現(xiàn)從Power Down狀態(tài)喚

AVR單片機系列(例如,ATMEGA168等)使用增強功能的看門狗(Enhanced Watchdog Timer),與原來的看門狗相比較,除了有相同復(fù)位的功能以外,還增加了中斷的功能設(shè)計時。使用看門狗的中斷功能,可以實現(xiàn)從Power Down狀態(tài)喚醒CPU;另外同時能使中斷和復(fù)位功能,可以在系統(tǒng)發(fā)生錯誤時,先進(jìn)入中斷狀態(tài),保存關(guān)鍵數(shù)據(jù)到EEPROM,然后在進(jìn)行系統(tǒng)復(fù)位。

AVR新的看門狗與舊狗(例如,ATMEGA16等)比較,增加了新的功能的同時脾氣也有了不少改變。設(shè)計時要摸清它的脾氣,以防被狗咬。

下面說明以ATMEGA16和ATMEGA168作一個簡單比較為例,簡要地說明一下注意要點:

看門狗定時器控制寄存器– WDTCR:

 

1.A1tmega168由于具有中斷功能,所以WDTCR增加了WDIF和WDIE兩個額外的bit的功能;

2.增加了WDP3,溢出周期可以有長達(dá)8秒;

3.新的看門狗在初始化時,WDT的值不再一定是0。只要MCUSR寄存器上的WDRF置位,WDT也將被強制置位。這時,如果WDE要清零,必須要WDRF先清零。

4.在設(shè)計時即使不用WDT,它也可能在無意中被能使,例如在runaway指針和調(diào)電情況下。因此即使不用WDT,在初始代碼中一定要檢查復(fù)位標(biāo)志,如果WDT系統(tǒng)復(fù)位發(fā)生要采取處理步驟。

最近重新設(shè)計一個項目,由原先使用的ATMEGA16更新到ATMEGA168。把原代碼轉(zhuǎn)換后,測試結(jié)果異常。經(jīng)過一天多的測試,才發(fā)現(xiàn)是新的看門狗惹的禍。以前用ATMEGA16,在初始化后才開始喂狗,可是新的AVR系列(例如ATMEGA168等),系統(tǒng)復(fù)位發(fā)生時(除上電復(fù)位外) ,WDT可能繼續(xù)運行,并使用最小溢出周期(大約15mS) ,造成了系統(tǒng)不斷復(fù)位。根據(jù)datasheet,在程序開始時的關(guān)狗后一切就恢復(fù)正常了:

#include

#include

uint8_t mcusr_mirror;

void get_mcusr(void)

__attribute__((naked))

__attribute__((section(".init3")));

void get_mcusr(void)

{

mcusr_mirror = MCUSR;

MCUSR = 0;

wdt_disable();

}

5.使用看門狗的中斷時,當(dāng)WDIF和WDIE置位,就會產(chǎn)生中斷。進(jìn)入相應(yīng)的中斷程序后,系統(tǒng)自動WDIF和WDIE清零。下次要使用看門狗的中斷時必須重新WDIE置位。

【更多資源】

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉