AVR 看门狗使用
//观察喂狗与不喂狗的区别,使用PB口的LED指示灯做状态指示。
//将PB口的LED指示灯使能开关切换到"ON"状态。
#include
#define DISP_DDR DDRB
#define DISP_PORT PORTB
//看门狗WDT初始化程序
void wdt_init(void)
{
asm("wdr"); //clr wdt
WDTCR=0x0F; //enable wdt,clk = 2048,2.1S
}
void main(void)
{
uint8 i;
DISP_DDR = 0XFF;
wdt_init();
while(1)
{
DISP_PORT++; //数据显示向上加,作AVR正常运行的指示
asm("wdr"); //喂狗,去除此句将导致狗饿死,AVR复位
delay50ms(20);
}
}
void WDT_off(void)
{
asm("cli");
asm("wdr"); //复位看门狗,即喂狗
/* Clear WDRF in MCUSR */
MCUSR &= ~(1< /* 置位 WDTOE 和 WDE*/ WDTCR |= (1< /* 关闭 WDT */ WDTCR = 0x00; } void WATCHDOG_Feed() { asm("wdr"); //复位看门狗,即喂狗 } //在AVR的运行程序中设置让PB显示端口自加。若AVR正常工作, //及时喂狗,则单片机设置的显示端口正常自加。 //去除语句:asm("wdr");单片机不断复位,程序得不到允许,自加数据没有显示往上加。 初始化,然后喂狗,喂狗要在看门狗咬人之前,(复位之前喂狗)
注:清狗指令不能放定时器中断里,因此不管程序飞跑到哪里,
执行哪里,中断产生后都会执行中断函数,
所以在定时器里的清狗指令会使WDT起不到作用(失效)。
上一篇: STM32单片机(4) 独立看门狗实验
下一篇:AVR USART接收中断程序
- 被动元件缺料涨价灾情惨烈,部分代工厂商或面临倒闭危机[18年05月16日 10:04]
- 绿联无线充电器评测_性价比爆棚价格实惠[18年05月19日 14:38]
- 基于i.MX6UL处理器的上电时序设计[18年05月19日 14:36]
- 绿联无线充电器怎么样_绿联无线充电器拆解详情[18年05月19日 14:14]
- 绿联qc3.0快速充电器评测(外观、性能、兼容测试)[18年05月19日 14:06]
- 电源重新上电引起的MCU启动失败的原因分析[18年05月19日 14:04]