搜索
bottom↓
回复: 1

MEGA48使用看门狗碰到的问题

[复制链接]

出0入0汤圆

发表于 2013-8-9 15:58:11 | 显示全部楼层 |阅读模式
本帖最后由 2408308628 于 2013-8-9 16:07 编辑

最近小弟在写一个程序,里边要用到看门狗,看门狗的功能相信大家都知道它的作用就是超过你设定的时间不喂狗,系统就会重启。而我现在碰到的问题就是看门狗设定不了,一使能看门狗,它就不断重启系统,我用的编译环境是atmelstudio 6.0,GCC,下面是我的程序:附件为对应程序proteus仿真电路
/*
* MEGA48_WDT_TEST.c
*
* Created: 2013-8-8 9:35:07
*  Author: Administrator
*/
//-----------------------------------------------------------------
//  名称: 看门狗应用
//-----------------------------------------------------------------
//  说明: 本例系统启动时,LED1点亮,正常运行时,LED1熄灭,LED2开始闪烁
//        程序设置看门狗溢出时间为:1.9s,定时器必须在此时间内复位
//        看门狗(喂狗),否则会引起系统复位,LED1再次点亮后熄灭,LED2
//        重新开始持续闪烁.
//
//-----------------------------------------------------------------


#define F_CPU   4000000UL
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/wdt.h>                       //看门狗相关头文件
#include <util/delay.h>
#define INT8U   unsigned char
#define INT16U  unsigned int


//分别定义LED1开/关,LED2闪烁
#define LED1_ON()     (PORTC&=~_BV(PC0))
#define LED1_OFF()    (PORTC|=_BV(PC0))
#define LED2_BLINK()   (PORTC^=_BV(PC5))






//------------------------------------------------------------------
// 主程序
//------------------------------------------------------------------
int main()
{
        
        DDRC|=_BV(PC0);PORTC|=_BV(PC0);
        DDRC|=_BV(PC5);PORTC|=_BV(PC5);
        DDRD&=~_BV(PD3);PORTD|=_BV(PD3);
        DDRC|=_BV(PC2);PORTC|=_BV(PC2);
        DDRC|=_BV(PC3);PORTC|=_BV(PC3);
        DDRD&=~_BV(PD2);PORTD|=_BV(PD2);
        LED1_ON();
        _delay_ms(1600);
        
        MCUCR=0X00;                     //INT0中断低电平触发
        EIMSK=_BV(INT0);                //INT0使能
        
        TCCR1B=0x03;                    //T1预设分频:64
        TCNT1=65536-F_CPU/64.0*1.5;    //晶振1MHZ,1.5S定时初值
        TIMSK1=0x01;                    //允许T1定时器溢出中断
        wdt_enable(WDTO_2S);           //启动看门狗(溢出时间1.9S,约等于2.0S     


    LED1_OFF();                          //LED1熄灭
        
    sei();                             //开中断
        while(1)
        {


                LED2_BLINK();
           _delay_ms(200);


        }




}


//-----------------------------------------------------------------
// 定时器1中断程序负责喂狗(1.9s以内)
//-----------------------------------------------------------------
ISR (TIMER1_OVF_vect)
{
        TCNT1=65536-F_CPU/64.0*1.5;    //晶振1MHZ,1.5S定时初值
        wdt_reset();                   //看门狗复位,也就是喂狗


}


//-----------------------------------------------------------------
// INT0中断函数(按下K1时关闭定时器,停止喂狗)
//-----------------------------------------------------------------
ISR (INT0_vect)
{
        TIMSK1=0X00;


}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。

出0入0汤圆

 楼主| 发表于 2013-8-9 16:23:00 | 显示全部楼层
这个程序如果修改成MEGA8对应寄存器,用在MEGA8就能正常工作 ,真快要疯了想不明
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-10-3 14:13

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表