维库电子市场网
登录 免费注册 首页 | 行业黑名单 | 委托交易 | 帮助 | English
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统
驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe

ATmega128看门狗问题,请大侠帮忙。谢谢!

作者:adic 栏目:单片机
ATMEGA128看门狗问题,请大侠帮忙。谢谢!
看门狗初始化子程序,
//Watchdog initialisation
// prescale: 64K cycles, 56mS
void watchdog_init(void)
{
    WDR(); //this prevents a timout on enabling
    WDTCR = 0x0A;  //WATCHDOG ENABLED - dont forget to issue WDRs
}
单片机初始化程序如下,
    CLI(); //disable all interrupts
    EEPROM_READ(0xfff, osccal);
    OSCCAL = osccal;
    XDIV  = 0x00; //XTAL divider
    XMCRA = 0x00; //external MEMORY
    port_init();
    watchdog_init();
    timer0_init();
    timer1_init();
    adc_init();
    twi_init();

    MCUCR = 0x20; // Enable Idel Mode
    EICRA = 0xA0; // INT3=False Edge, INT2=False Edge
    EICRB = 0x00; //extended ext ints
    EIMSK = 0x0C; // INT2 INT3 enable
    TIMSK = 0x01; //timer interrupt sources
    ETIMSK = 0x00; //extended timer interrupt sources
    SEI(); //re-enable interrupts
有每秒210次的timer0_init()中断来复位看门狗【WDR()】AD转换器是采用的IDLE模式来进行采样工作的(减少数字部分的干扰)。
但该看门狗就是工作异常,导致单片机重复启动。

2楼: >>参与讨论
blueboyjf
你用中断复位看门狗,好像意义不大吧
万一程序进入死循环,而中断又是好的,看门狗就没用了。
看门狗初始化有问题,我前两天刚遇到的。

先使能WDCE和WDE在设置分频比
我的MEGA8这样设置才可以正常工作
WDR();
WDTCR = 0x18;//(1<<WDCE)|(1<<WDE);
WDTCR = 0x1f;//(1<<WDP0)|(1<<WDP1)|(1<<WDP2);

3楼: >>参与讨论
农民讲习所
进IDLE前关WD,苏醒后在开
 
4楼: >>参与讨论
adic
多谢二位。

blueboyjf讲的我理解了,回去试试。
农民讲习所讲的,我不明白。原因是我的AD转换器进入IDLE模式转换一次应该在125uS,时间足够短,应该不会超过看门狗的时间。

5楼: >>参与讨论
zsmbj
如blueboyjf所说,可以搜一下,有个讨论看门狗的帖子!
一般看门狗都有现成的函数,最好直接调用,如果自己写的先要研究一下有关看门狗的详细说明。

6楼: >>参与讨论
blueboyjf
所长可能是这个意思
你进入IDEL然后采样,然后你要使能‘采样完成中断’,这样采样完了程序照样执行。否则采样完成了没有中断的话,CPU会一直IDEL下去,直到有中断产生。而IDEL这段时间,看门狗一直在工作的,但是你却没有‘喂狗’,所以看门狗就动作了

7楼: >>参与讨论
adic
不停的复位。
很奇怪在ATMEGA16中该初始化程序就能让看门狗正常工作,在ATMEGA128中就不行。总是不停的复位。
//Watchdog initialisation
// prescale: 64K cycles, 56mS
void watchdog_init(void)
{
    WDR(); //this prevents a timout on enabling
    WDTCR = 0x0A;  //WATCHDOG ENABLED - dont forget to issue WDRs
}


8楼: >>参与讨论
adic
M128M103兼容导致的安全级别问题
原因是M128M103兼容导致的安全级别问题。手册上提到了,千万主意。
在不兼容熔丝配置时,使能看门狗是任何时候都可以的,但是修改分频数值是要有时序要求的。

参与讨论
昵称:
讨论内容:
 
 
相关帖子
这就是AVR!!!
ICP1不能采样,当我用到定时器2进行PWM输出
大家碰到过这样的问题吗?
仿真器玩不转了LED狂跳
发布一个用M8做的东东,照片见下,详情请光临个人主页
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入


Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号