AVR看门狗
出处:kingpoo 发布于:2007-04-29 11:08:16
AVR新的看门狗与旧狗(例如,ATMEGA16等)比较,增加了新的功能的同时脾气也有了不少改变。设计时要摸清它的脾气,以防被狗咬。
下面说明以ATMEGA16和ATMEGA168作一个简单比较为例,简要地说明一下注意要点:
看门狗控制– WDTCR:
Atmega16:
Atmega168:
1.A1tmega168由于具有中断功能,所以WDTCR增加了WDIF和WDIE两个额外的bit的功能;
2.增加了WDP3,溢出周期可以有长达8秒;
3.新的看门狗在初始化时,WDT的值不再一定是0。只要SR寄存器上的WDRF置位,WDT也将被强制置位。这时,如果WDE要清零,必须要WDRF先清零。
4.在设计时即使不用WDT,它也可能在无意中被能使,例如在runaway指针和调电情况下。因此即使不用WDT,在初始代码中一定要检查复位标志,如果WDT系统复位发生要采取处理步骤。
近重新设计一个项目,由原先使用的ATMEGA16更新到ATMEGA168。把原代码转换后,测试结果异常。经过一天多的测试,才发现是新的看门狗惹的祸。以前用ATMEGA16,在初始化后才开始喂狗,可是新的AVR系列(例如ATMEGA168等),系统复位发生时(除上电复位外) ,WDT可能继续运行,并使用溢出周期(大约15mS) ,造成了系统不断复位。根据datasheet,在程序开始时的关狗后一切就恢复正常了:
#include <stdint.h>
#include <avr/wdt.h>
uint8_t mcusr_mirror;
void get_mcusr(void) \
__attribute__((naked)) \
__attribute__((section(".init3")));
void get_mcusr(void)
{
mcusr_mirror = MCUSR;
MCUSR = 0;
wdt_disable();
}
5.使用看门狗的中断时,当WDIF和WDIE置位,就会产生中断。进入相应的中断程序后,系统自动WDIF和WDIE清零。下次要使用看门狗的中断时必须重新WDIE置位。
版权与免责声明
凡本网注明“出处:维库电子市场网”的所有作品,版权均属于维库电子市场网,转载请必须注明维库电子市场网,//tgdrjb.cn,违反者本网将追究相关法律责任。
本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。
如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。
- 专业解析:单片机 BootLoader 的发展进化全记录2025/6/18 14:49:38
- 43 问全解:单片机晶振常见问题深度剖析2025/6/9 16:04:35
- 一文全面读懂单片机的存储器2025/6/3 16:22:16
- 单片机串口接收的几种常用的数据处理方法2025/5/23 16:26:54
- 单片机 D/A 转换器接口:关键概念深度剖析2025/5/23 14:29:38