打印
[AVR单片机]

M168训狗心得 【转】

[复制链接]
1500|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
huamunv|  楼主 | 2009-12-7 23:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
新的AVR系列单片机(例如,ATMEGA168等)使用增强功能的看门狗(Enhanced Watchdog Timer),与原来的看门狗相比较,除了有相同复位的功能以外,还增加了中断的功能设计时。使用看门狗的中断功能,可以实现从Power Down状态唤醒CPU;另外同时能使中断和复位功能,可以在系统发生错误时,先进入中断状态,保存关键数据到EEPROM,然后在进行系统复位。

AVR新的看门狗与旧狗(例如,ATMEGA16等)比较,增加了新的功能的同时脾气也有了不少改变。设计时要摸清它的脾气,以防被狗咬。
下面说明以ATMEGA16和ATMEGA168作一个简单比较为例,简要地说明一下注意要点:
看门狗定时器控制寄存器– WDTCR:
Atmega16:

Atmega168:

1.A1tmega168由于具有中断功能,所以WDTCR增加了WDIF和WDIE两个额外的bit的功能;
2.增加了WDP3,溢出周期可以有长达8秒;
3.新的看门狗在初始化时,WDT的值不再一定是0。只要MCUSR寄存器上的WDRF置位,WDT也将被强制置位。这时,如果WDE要清零,必须要WDRF先清零。
4.在设计时即使不用WDT,它也可能在无意中被能使,例如在runaway指针和调电情况下。因此即使不用WDT,在初始代码中一定要检查复位标志,如果WDT系统复位发生要采取处理步骤。
最近重新设计一个项目,由原先使用的ATMEGA16更新到ATMEGA168。把原代码转换后,测试结果异常。经过一天多的测试,才发现是新的看门狗惹的祸。以前用ATMEGA16,在初始化后才开始喂狗,可是新的AVR系列(例如ATMEGA168等),系统复位发生时(除上电复位外) ,WDT可能继续运行,并使用最小溢出周期(大约15mS) ,造成了系统不断复位。根据datasheet,在程序开始时的关狗后一切就恢复正常了:
5.使用看门狗的中断时,当WDIF和WDIE置位,就会产生中断。进入相应的中断程序后,系统自动WDIF和WDIE清零。下次要使用看门狗的中断时必须重新WDIE置位。

相关帖子

沙发
linhai2009| | 2009-12-7 23:22 | 只看该作者
呵呵,有意思

使用特权

评论回复
板凳
love_life| | 2009-12-8 10:07 | 只看该作者
不错,好**

使用特权

评论回复
地板
lovelyegle| | 2009-12-8 22:16 | 只看该作者
:lol,有趣!

使用特权

评论回复
5
Karlshen| | 2009-12-8 22:56 | 只看该作者
顶!

使用特权

评论回复
6
suoma| | 2009-12-9 13:24 | 只看该作者
:)

使用特权

评论回复
7
huamunv|  楼主 | 2009-12-9 22:16 | 只看该作者
同享!

使用特权

评论回复
8
wangwo| | 2009-12-11 21:37 | 只看该作者
mark

使用特权

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

本版积分规则

88

主题

730

帖子

1

粉丝