WDT

#include <iom16v.h>
#include <macros.h>
#define uchar unsigned char
#define uint unsigned int 
void WDT_init(void)
{
    asm("wdr");//WDR();WDR复位,复位看门狗
    WDTCR = 0x0F;//开启看门狗
    //2,048K,VCC=5.0V时典型的溢出周期,2.1s
}
void WDT_off(void)
{
    WDR();
    WDTCR| = (1<<WDTOE)|(1<<WDE);
    WDTCR = 0x00;//关闭看门狗
}
void main(void)
{
    uint i=0;
    DDRB = 0xff;
    PORTB = 0xff;//输出,led低电平有效
    WDT_init()
    while(1)
    {
        for(i=0;i<8;i++)
        {
            PORTB = ~BIT(i);
            delay(100);
        }
        WDT_off();////喂狗,注释此句将导致狗饿死,AVR复位
    }
}

comments:
1、观察喂狗与不喂狗的区别,使用PB口的LED指示灯做状态指示。
2、养看门狗的用意,在于用它监控系统:在程序本该运行的地方喂狗,
如果程序卡死或跑飞,将不会运行到那,那样狗没有被喂到,饿死了,
控制器复位,得以重启从而进行控制。
3、本实验演示功能:养一只AVR内部看门狗,及时喂狗,狗不饿死,
单片机不复位;不及时喂狗,狗饿死了,单片机就复位。
4、本实验的程序设计较为简单,旨在给出养狗、喂狗,不让狗饿死的简单示例。
WDT看门狗说明:
看门狗定时器由独立的1Mhz片内振荡器驱动。这是 VCC = 5V 时的典型值.通过设置看
位看门狗定时器。此外,禁止看门狗定时器或发生复位时定时器也被复位。复位时间有 8 个选项。如果没有及时复位定时器,一旦时间超过复位周期,ATmega16就复位,并执行复位向量指向的程序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值