新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > AVR編程_如何通過軟件復(fù)位AVR

AVR編程_如何通過軟件復(fù)位AVR

作者: 時(shí)間:2016-11-23 來源:網(wǎng)絡(luò) 收藏
Question
如何通過軟件復(fù)位AVR?
Answer
如果你想通過軟件復(fù)位AVR,你應(yīng)該使用內(nèi)部看門狗。簡(jiǎn)單的使能它和讓它溢出。當(dāng)看門狗觸發(fā)后,程序計(jì)數(shù)器返回到0,清除所有的寄存器和其他正在執(zhí)行的任務(wù),這與將RESET腳拉低有同樣的效果。

你不應(yīng)該處理:
--用另一個(gè)AVR的引腳連接外部RESET引腳。在短暫的復(fù)位時(shí)間,AVR的引腳會(huì)三態(tài)失效,這會(huì)導(dǎo)致RESET無效。
--跳到程序地址0,跳到程序地址0,這不會(huì)清除全部的寄存器,所以你不會(huì)得到一個(gè)完整的“復(fù)位”。

本文引用地址:http://m.butianyuan.cn/article/201611/320370.htm

下列是每30mS復(fù)位一次AVR的例子代碼(GCC):

#include <avr/io.h>
#include

int main(void)
{
wdt_enable(WDTO_30MS);
while(1) {};
}

或者你可以生成一個(gè)宏:

#include
#include

#define Reset_AVR() wdt_enable(WDTO_30MS); while(1) {}

int main(void)
{
Reset_AVR();
}




關(guān)鍵詞: AVR編程軟件復(fù)

評(píng)論


技術(shù)專區(qū)

關(guān)閉