testcode 发表于 2006-3-4 00:49:30

AVR的新看门狗驯狗心得

新的AVR系列(例如,ATMEGA168等)使用增强功能的看门狗(Enhanced Watchdog Timer),与原来的看门狗相比较,除了有相同复位的功能以外,还增加了中断的功能设计时。使用看门狗的中断功能,可以实现从Power Down状态唤醒CPU;另外同时能使中断和复位功能,可以在系统发生错误时,先进入中断状态,保存关键数据到EEPROM,然后在进行系统复位。



AVR新的看门狗与旧狗(例如,ATMEGA16等)比较,增加了新的功能的同时脾气也有了不少改变。设计时要摸清它的脾气,以防被狗咬。



下面说明以ATMEGA16和ATMEGA168作一个简单比较为例,简要地说明一下注意要点:

看门狗定时器控制寄存器– WDTCR:



Atmega16:

http://cache.amobbs.com/bbs_upload782111/files_5/armok01105306.JPG

Atmega168:

http://cache.amobbs.com/bbs_upload782111/files_5/armok01105307.JPG



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,在程序开始时的关狗后一切就恢复正常了:



#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置位。



参考文档:

1."AVR132: Using the Enhanced Watchdog Timer";

2."Avr-Libc-User-Manual-1.4.3";

3."Atmega168 Datasheet"。

willknow 发表于 2006-3-4 07:53:39

收藏!

./emotion/em105.gif./emotion/em105.gif

wenhuaxiao 发表于 2006-3-4 08:34:04

谢谢分享

avrgcc 发表于 2006-3-4 15:12:35

感谢分享!

jackrich 发表于 2006-3-6 08:40:24

谢谢!

zhengkaike 发表于 2006-3-6 15:04:22

顶〉〉〉〉〉〉〉〉〉〉〉〉〉

athle 发表于 2006-3-22 15:18:12

我用mega88试了还是不行!你用的是哪种状态?

ainet 发表于 2006-3-22 16:24:01

突生想法:软件模拟与实际调试 这方面也应该有所不同。

 是否程序初始化就要执行一下关狗指令!

avr-qq 发表于 2006-10-23 15:44:13

谢谢

weiwgml 发表于 2007-3-10 12:18:05

路过 顶了收藏谢谢分享

Gorgon_Meducer 发表于 2007-3-11 13:41:02

以M48、88、168为代表的单片机增加了很多很诱人的功能。非常爽!

看门狗中断,真的非常好用。

hhrfjz 发表于 2007-6-13 10:55:00

路过 顶了收藏谢谢分享

qjghj 发表于 2007-6-13 13:18:14

“以M48、88、168为代表的单片机增加了很多很诱人的功能。非常爽! 看门狗中断,真的非常好用。”





弱问一下看门狗中断程序里一般都做什么?可以是跳转指令吗?

leo_cheung 发表于 2008-3-18 10:09:09

zxq6 发表于 2008-3-18 10:18:04

谢谢。

lonelynw 发表于 2008-3-18 10:21:46

够细致~~~~~~
过来让兄弟们赞一个,(*^__^*) 嘻嘻……

liuyuema09 发表于 2008-3-18 15:30:04

sciencehero 发表于 2008-3-18 19:24:13

收藏

flyroeg 发表于 2008-7-12 15:33:15

谢谢分享!!

holycat 发表于 2008-7-12 15:51:16

有深度,表扬一哈。

lofeng 发表于 2008-7-12 17:37:19

谢谢分享

cgbabc 发表于 2008-7-12 17:48:59

好东西,要顶

0620221 发表于 2009-6-11 11:41:26

mark

bbi3014 发表于 2009-6-11 13:01:46

mark

xml2028 发表于 2009-6-11 17:08:28

mark,以后用到

dklcmc 发表于 2009-6-11 20:05:38

谢谢分享!学习了

spiritcity 发表于 2009-6-11 21:51:51

学习了

chiooo 发表于 2009-6-30 12:44:04

新看门狗很好用,特别是做中断用

fengtao137 发表于 2009-8-25 14:28:14

学习了,谢谢!

sunmy 发表于 2009-10-15 21:27:54

学习了

hithyy 发表于 2009-10-15 21:56:40

受教

ggyyll8683 发表于 2009-10-15 22:28:48

mark

kinoko 发表于 2009-10-15 22:58:18

sign 做了个小电器想加上看门狗安全点

eric_wang 发表于 2009-10-16 17:03:07

好東西,謝謝了先!

xingcastle 发表于 2009-10-22 16:37:11

因为以前一直都在别人的程序上修改
所以到现在才发现
在很多细节上
自己原来一无所知
实在惭愧
废话不多说
继续天天向上

CHENBINGSTER 发表于 2009-10-23 08:36:27

其实初学就要在别人的程序上修改

ybqwf 发表于 2009-10-23 09:02:22

天天向上

king23 发表于 2009-12-3 10:33:07

碰到了你的问题,,把熔丝位按出厂设置全部重置了,,就好了,,用高压编程器重置的~~
重置后,,使用内部晶振8M,,分频之后其实是1M,,程序能跑了再慢慢改熔丝,,
出厂熔丝位(mega88)ourdev_510217.doc(文件大小:228K) (原文件名:新建 Microsoft Word 文档.doc)

king23 发表于 2009-12-3 16:03:28

版主 楼上那个不是我。从没回复过这个。

再问问 楼上的哥们,在哪上的论坛,不会和我用过同一台电脑吧?

123hht 发表于 2010-3-17 11:02:42

能给我提供一个Atmega88的看门狗用作定时中断的程序吗?捣鼓了2天了,一点效果都没有,谢谢了。本人比较菜。

xuejianhua1986 发表于 2010-3-17 21:06:40

mark

fengzhongye 发表于 2010-3-18 13:21:58

记过

ammcu 发表于 2010-3-18 20:29:42

amrk

jj.deng 发表于 2010-3-29 07:55:47

mark!

zlj2008 发表于 2010-3-29 08:26:52

mark

steven.zhou 发表于 2010-3-31 16:51:19

明白了

niebinkui 发表于 2010-4-22 20:38:15

学习了

jxhcumt727 发表于 2010-5-19 11:52:28

学习了

10086 发表于 2010-11-8 22:19:26

谢谢分享

alice5208 发表于 2011-2-17 14:22:31

谢谢分享

fudaqiang 发表于 2011-3-21 16:41:55

MARK

Sandypi 发表于 2011-6-2 23:33:48

mark

mr_lonely 发表于 2011-6-4 09:43:35

都没有弄过看门狗

leirui001 发表于 2012-2-29 19:46:20

酷毙了~
最近用1284P和128遇到类似问题,都郁闷死了,现在可是拨开迷雾看到光明了

thunderfk 发表于 2012-2-29 20:58:02

mark

eleven_sue 发表于 2012-6-5 16:30:07

学习了,mark

社会实践 发表于 2012-6-6 16:03:48

mark,非常有用

447224180 发表于 2012-7-31 18:00:45

这个学习一下

jack_yu 发表于 2012-7-31 18:02:53

收藏了。谢谢!

liujian6f 发表于 2013-5-9 14:41:17

mark !!!!!
页: [1]
查看完整版本: AVR的新看门狗驯狗心得