|
| 技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统 驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe |
ATmega128看门狗问题,请大侠帮忙。谢谢! |
|
| 作者:adic 栏目:单片机 | |
看门狗初始化子程序, //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 于 2005-6-27 10:00:00 发布:
你用中断复位看门狗,好像意义不大吧 万一程序进入死循环,而中断又是好的,看门狗就没用了。 看门狗初始化有问题,我前两天刚遇到的。 先使能WDCE和WDE在设置分频比 我的MEGA8这样设置才可以正常工作 WDR(); WDTCR = 0x18;//(1<<WDCE)|(1<<WDE); WDTCR = 0x1f;//(1<<WDP0)|(1<<WDP1)|(1<<WDP2); |
|
| 3楼: | >>参与讨论 |
| 作者: 农民讲习所 于 2005-6-27 10:17:00 发布:
进IDLE前关WD,苏醒后在开 |
|
| 4楼: | >>参与讨论 |
| 作者: adic 于 2005-6-27 11:03:00 发布:
多谢二位。 blueboyjf讲的我理解了,回去试试。 农民讲习所讲的,我不明白。原因是我的AD转换器进入IDLE模式转换一次应该在125uS,时间足够短,应该不会超过看门狗的时间。 |
|
| 5楼: | >>参与讨论 |
| 作者: zsmbj 于 2005-6-27 11:11:00 发布:
如blueboyjf所说,可以搜一下,有个讨论看门狗的帖子! 一般看门狗都有现成的函数,最好直接调用,如果自己写的先要研究一下有关看门狗的详细说明。 |
|
| 6楼: | >>参与讨论 |
| 作者: blueboyjf 于 2005-6-27 12:05:00 发布:
所长可能是这个意思 你进入IDEL然后采样,然后你要使能‘采样完成中断’,这样采样完了程序照样执行。否则采样完成了没有中断的话,CPU会一直IDEL下去,直到有中断产生。而IDEL这段时间,看门狗一直在工作的,但是你却没有‘喂狗’,所以看门狗就动作了 |
|
| 7楼: | >>参与讨论 |
| 作者: adic 于 2005-6-27 12:31:00 发布:
不停的复位。 很奇怪在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 于 2005-6-30 15:05:00 发布:
M128和M103兼容导致的安全级别问题 原因是M128和M103兼容导致的安全级别问题。手册上提到了,千万主意。 在不兼容熔丝配置时,使能看门狗是任何时候都可以的,但是修改分频数值是要有时序要求的。 |
|
|
|
| 免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入 |
Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号 |