打印
[AVR单片机]

启用AVR内部看门狗后,还是死机。

[复制链接]
5832|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhai_jianjun|  楼主 | 2012-10-24 16:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
airwill| | 2012-10-24 19:35 | 只看该作者
楼主可能把看门狗看得太神了. 其实看门狗只能把跑飞或异常运行的程序复位.
但并不能解决软件问题和里面的 BUG.
如果你的软件本来就没有处理好按键和显示屏的问题, 那么启用看门狗, 这些功能仍然还是问题.
所以, 在写程序的时候, 一般建议开始先不要开启看门狗. 软件所有功能完成后, 再去考虑它

使用特权

评论回复
板凳
zhai_jianjun|  楼主 | 2012-10-25 08:05 | 只看该作者
感觉像是受到了某种干扰使单片机崩溃了,本来是能正常运行的,连续运行后会突然变得没有任何反应了。
最少的4个小时,2天出现的也有,也有3天没有出现的时候。
死机发生的时候,IO口就保持在某种状态不发生任何变化了。
我的主程序是
int main( void )
{
        init_devices();
        while(1)
        {
                各种处理();
                WDR();
        }
        return 1;
}

只有这里的一处出现过调用WDR()函数。
这种情况好像不能是软件的原因。
运行环境就在我的办公室里

使用特权

评论回复
地板
ligao0302| | 2012-10-25 09:33 | 只看该作者
:)

使用特权

评论回复
5
airwill| | 2012-10-25 20:48 | 只看该作者
本帖最后由 airwill 于 2012-10-25 20:49 编辑

照这个情况看, 可能鱼看门狗无关.
问题估计出在你的

各种处理();

里面有bug在
可以关掉看门狗试试, 是不是还是这样的情况.
另外, 从源头上找到软件的问题, 不要简单地寄希望于看门狗

使用特权

评论回复
6
NE5532| | 2012-10-25 21:56 | 只看该作者
如果楼主有靠狗吊命的思想,再怎么做程序都会死,要认真规划,模块化编写,仔细测试边界条件,做到没有狗都不死,然后再开狗。

使用特权

评论回复
7
dqyubsh| | 2012-10-28 00:20 | 只看该作者
估计还是软件的问题。没用过狗,都是熔丝那直接关了。

使用特权

评论回复
8
libo883| | 2012-10-31 13:12 | 只看该作者
各种处理();
里面有不会有内存溢出等BUG,或者是循环判断,须得仔细看看

使用特权

评论回复
9
libo883| | 2012-10-31 13:14 | 只看该作者
如果狗设置正确,要是各种处理()里面死循环,肯定一直重启,现在没重启,应该不是狗的问题,

使用特权

评论回复
10
kpywe| | 2012-11-6 08:50 | 只看该作者
根据你的描述原因有:
可能1、你的看门狗是不是根本就没有工作?如果没有工作,程序中如果出现死循环,则就会出现你描述的现象。
可能2、你的系统在不断的复位

使用特权

评论回复
11
getit95| | 2012-11-12 11:09 | 只看该作者
可能是堆栈崩溃,检查各种指针是否安全。

使用特权

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

本版积分规则

0

主题

3

帖子

0

粉丝