搜索
bottom↓
回复: 59

AVR的新看门狗驯狗心得

[复制链接]

出0入0汤圆

发表于 2006-3-4 00:49:30 | 显示全部楼层 |阅读模式
新的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,在程序开始时的关狗后一切就恢复正常了:



#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"。

出0入0汤圆

发表于 2006-3-4 07:53:39 | 显示全部楼层
收藏!

出0入0汤圆

发表于 2006-3-4 08:34:04 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2006-3-4 15:12:35 | 显示全部楼层
感谢分享!

出0入0汤圆

发表于 2006-3-6 08:40:24 | 显示全部楼层
谢谢!

出0入0汤圆

发表于 2006-3-6 15:04:22 | 显示全部楼层
顶〉〉〉〉〉〉〉〉〉〉〉〉〉

出0入0汤圆

发表于 2006-3-22 15:18:12 | 显示全部楼层
我用mega88试了还是不行!你用的是哪种状态?

出0入0汤圆

发表于 2006-3-22 16:24:01 | 显示全部楼层
突生想法:软件模拟与实际调试 这方面也应该有所不同。

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

出0入0汤圆

发表于 2006-10-23 15:44:13 | 显示全部楼层
谢谢

出0入0汤圆

发表于 2007-3-10 12:18:05 | 显示全部楼层
路过 顶了  收藏  谢谢分享

出0入296汤圆

发表于 2007-3-11 13:41:02 | 显示全部楼层
以M48、88、168为代表的单片机增加了很多很诱人的功能。非常爽!

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

出0入0汤圆

发表于 2007-6-13 10:55:00 | 显示全部楼层
路过 顶了  收藏  谢谢分享

出0入0汤圆

发表于 2007-6-13 13:18:14 | 显示全部楼层
“以M48、88、168为代表的单片机增加了很多很诱人的功能。非常爽! 看门狗中断,真的非常好用。”





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

出0入0汤圆

发表于 2008-3-18 10:09:09 | 显示全部楼层

出0入22汤圆

发表于 2008-3-18 10:18:04 | 显示全部楼层
谢谢。

出0入0汤圆

发表于 2008-3-18 10:21:46 | 显示全部楼层
够细致~~~~~~
过来让兄弟们赞一个,(*^__^*) 嘻嘻……

出0入0汤圆

发表于 2008-3-18 15:30:04 | 显示全部楼层

出0入0汤圆

发表于 2008-3-18 19:24:13 | 显示全部楼层
收藏

出0入0汤圆

发表于 2008-7-12 15:33:15 | 显示全部楼层
谢谢分享!!

出0入0汤圆

发表于 2008-7-12 15:51:16 | 显示全部楼层
有深度,表扬一哈。

出0入0汤圆

发表于 2008-7-12 17:37:19 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2008-7-12 17:48:59 | 显示全部楼层
好东西,要顶

出0入0汤圆

发表于 2009-6-11 11:41:26 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-6-11 13:01:46 | 显示全部楼层
mark

出675入8汤圆

发表于 2009-6-11 17:08:28 | 显示全部楼层
mark,以后用到

出0入0汤圆

发表于 2009-6-11 20:05:38 | 显示全部楼层
谢谢分享!学习了

出0入0汤圆

发表于 2009-6-11 21:51:51 | 显示全部楼层
学习了

出0入0汤圆

发表于 2009-6-30 12:44:04 | 显示全部楼层
新看门狗很好用,特别是做中断用

出0入0汤圆

发表于 2009-8-25 14:28:14 | 显示全部楼层
学习了,谢谢!

出0入0汤圆

发表于 2009-10-15 21:27:54 | 显示全部楼层
学习了

出0入0汤圆

发表于 2009-10-15 21:56:40 | 显示全部楼层
受教

出0入0汤圆

发表于 2009-10-15 22:28:48 | 显示全部楼层
mark

出110入26汤圆

发表于 2009-10-15 22:58:18 | 显示全部楼层
sign 做了个小电器想加上看门狗安全点

出0入0汤圆

发表于 2009-10-16 17:03:07 | 显示全部楼层
好東西,謝謝了先!

出0入0汤圆

发表于 2009-10-22 16:37:11 | 显示全部楼层
因为以前一直都在别人的程序上修改
所以到现在才发现
在很多细节上
自己原来一无所知
实在惭愧
废话不多说
继续天天向上

出0入0汤圆

发表于 2009-10-23 08:36:27 | 显示全部楼层
其实初学就要在别人的程序上修改

出0入0汤圆

发表于 2009-10-23 09:02:22 | 显示全部楼层
天天向上

出0入0汤圆

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

出0入0汤圆

发表于 2009-12-3 16:03:28 | 显示全部楼层
版主 楼上那个不是我。从没回复过这个。

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

出0入0汤圆

发表于 2010-3-17 11:02:42 | 显示全部楼层
能给我提供一个Atmega88的看门狗用作定时中断的程序吗?捣鼓了2天了,一点效果都没有,谢谢了。本人比较菜。

出0入0汤圆

发表于 2010-3-17 21:06:40 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-18 13:21:58 | 显示全部楼层
记过

出0入0汤圆

发表于 2010-3-18 20:29:42 | 显示全部楼层
amrk

出0入0汤圆

发表于 2010-3-29 07:55:47 | 显示全部楼层
mark!

出0入0汤圆

发表于 2010-3-29 08:26:52 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-31 16:51:19 | 显示全部楼层
明白了

出0入0汤圆

发表于 2010-4-22 20:38:15 | 显示全部楼层
学习了

出0入0汤圆

发表于 2010-5-19 11:52:28 | 显示全部楼层
学习了

出0入0汤圆

发表于 2010-11-8 22:19:26 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2011-2-17 14:22:31 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2011-3-21 16:41:55 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-6-2 23:33:48 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-4 09:43:35 | 显示全部楼层
都没有弄过看门狗

出0入0汤圆

发表于 2012-2-29 19:46:20 | 显示全部楼层
酷毙了~
最近用1284P和128遇到类似问题,都郁闷死了,现在可是拨开迷雾看到光明了

出0入0汤圆

发表于 2012-2-29 20:58:02 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-6-5 16:30:07 | 显示全部楼层
学习了,mark

出0入0汤圆

发表于 2012-6-6 16:03:48 | 显示全部楼层
mark,非常有用

出0入0汤圆

发表于 2012-7-31 18:00:45 | 显示全部楼层
这个学习一下

出0入0汤圆

发表于 2012-7-31 18:02:53 | 显示全部楼层
收藏了。谢谢!

出0入0汤圆

发表于 2013-5-9 14:41:17 | 显示全部楼层
mark !!!!!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-6 10:44

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表