打印
[AVR单片机]

Attiny1634看门狗设置

[复制链接]
825|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
swillow|  楼主 | 2014-12-25 12:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
swillow|  楼主 | 2014-12-25 12:34 | 只看该作者
附上我写的测试代码,本来是两个LED不停的闪烁的,但实际是LED闪过之后就灭了
#include <avr/io.h>
#include "perdefine.h"

#include <avr/interrupt.h>
#include <util/delay.h>
#include <avr/wdt.h>
//#include <avr/signal.h>
#define LED1        PB3
#define LED2    PC0
#define LEDPollOn()                PORTC&=(~(1<<LED2))
#define LEDPollOff()        PORTC|=(1<<LED2)
#define LEDDataOn()                PORTB&=(~(1<<LED1))
#define LEDDataOff()        PORTB|=(1<<LED1)

#define        POLL_TIME_INTERVAL                200                                //Poll interval time

#define WDTEnable()                WDTCSR|=(1<<WDE)
#define WDTClear()                wdt_reset()

void LedInit(void)
{
        uchar i;
        DDRB|=(1<<PB3);        //1 output
        DDRC|=(1<<PC0);
        for(i=0;i<2;i++)
        {
                LEDPollOff();
                LEDDataOff();
                delayms(200);
                LEDPollOn();
                LEDDataOn();
                delayms(200);
        }
        LEDPollOff();
        LEDDataOff();
        delayms(200);
}

void WDTInit(void)
{
        WDTClear();
        CCP=0xD8;                                //Write correct signature to CCP
        WDTCSR=0x00;
        WDTCSR|=(1<<WDP1)|(1<<WDE);                       
                                                                                //WDP3:0=0000,16ms  0001 32ms          0010 64ms
                                                                                //                =0011,125ms        0100 250ms         0101 500ms
                                                                                //                =0110,1.0s        0111 2.0s        1000 4.0S
}


int main(void)
{
        uchar data[10],rec_buf[36];
        uchar i;
        uchar num,cmd;
        uchar index_rx_rd=0x00;
        LedInit();
        //DDRC|=(1<<PC1);        //text code
        //WDTInit();
        //sei();
        //wdt_enable(0x02);                //WDP3:0=0010 64ms
        WDTInit();
        while (1)
        {
                WDTClear();
                LEDDataOn();
                delayms(500);
                LEDDataOff();
                delayms(500);
        }
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

11

帖子

0

粉丝