[AVR单片机] 启用AVR内部看门狗后,还是死机。

[复制链接]
6629|11
 楼主| zhai_jianjun 发表于 2012-10-24 16:15 | 显示全部楼层 |阅读模式
类似于调试时软件出错时,能够复位,可是在实际运行时,却表现为按键没反应,同时不刷新显示屏的死机表现,IO口的状态也有输出的端口。
敬请高手赐教
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 | 显示全部楼层
airwill 发表于 2012-10-25 20:48 | 显示全部楼层
本帖最后由 airwill 于 2012-10-25 20:49 编辑

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

各种处理();

里面有bug在
可以关掉看门狗试试, 是不是还是这样的情况.
另外, 从源头上找到软件的问题, 不要简单地寄希望于看门狗
NE5532 发表于 2012-10-25 21:56 | 显示全部楼层
如果楼主有靠狗吊命的思想,再怎么做程序都会死,要认真规划,模块化编写,仔细测试边界条件,做到没有狗都不死,然后再开狗。
dqyubsh 发表于 2012-10-28 00:20 | 显示全部楼层
估计还是软件的问题。没用过狗,都是熔丝那直接关了。
libo883 发表于 2012-10-31 13:12 | 显示全部楼层
各种处理();
里面有不会有内存溢出等BUG,或者是循环判断,须得仔细看看
libo883 发表于 2012-10-31 13:14 | 显示全部楼层
如果狗设置正确,要是各种处理()里面死循环,肯定一直重启,现在没重启,应该不是狗的问题,
kpywe 发表于 2012-11-6 08:50 | 显示全部楼层
根据你的描述原因有:
可能1、你的看门狗是不是根本就没有工作?如果没有工作,程序中如果出现死循环,则就会出现你描述的现象。
可能2、你的系统在不断的复位
getit95 发表于 2012-11-12 11:09 | 显示全部楼层
可能是堆栈崩溃,检查各种指针是否安全。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

3

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部