打印

说下我对看门狗目前的认识...

[复制链接]
10269|42
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xlsbz|  楼主 | 2011-5-11 08:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 xlsbz 于 2011-5-12 09:51 编辑

(1)首先,弄看门狗是必须的.当然是调试阶段:可以不弄或者弄(若弄了也得想方法知道是否发生了看门狗复位)。发布产品阶段:一定要弄。
(2)对我目前来说,中断里养狗挺好。比如说我接收串口。 别人写程序串口发送给我。如果那人写的程序发疯了,疯狂发数,我就一直在串口中断出不来了啊!所以我必须得在中断里面喂狗。
(3)最好能想办法知道程序里面最长两次喂狗语句(进入while后的)之间的时间间隔(ms级别就行),这样心里比较坦荡荡。(我就是通过printf打印了出来)
(4)喂狗到处喂不见得不好。我现在的做法是弄个喂狗函数(还弄了宏定义,可以一下子就把狗都不喂了!就是让喂狗函数不起作用),在我认为有必要的地方喂。
(5)关于看门狗何时启动(当然有的芯片可能无法控制看门狗启停或者仅仅能设置一次,或者我没遇到的其他情况的芯片),我觉得在系统时钟(就是晶振)初始化稳定了,就把狗打开吧!!当然晚点打开问题也不大。
     谨慎点的话,还是早点打开吧。

再次说下我对看门狗的认识.....见下面链接
https://bbs.21ic.com/viewthread.php?tid=235297&highlight=

相关帖子

沙发
xlsbz|  楼主 | 2011-5-11 08:52 | 只看该作者
编程精粹(Microsoft 编写优质无错C 程序秘诀).rar (1.13 MB)

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
caozhifu + 1 不错不错
板凳
xlsbz|  楼主 | 2011-5-11 08:58 | 只看该作者
2楼我发的这个 我受益很大! 大家感兴趣可以看看.....

有了这个assert 再加上静态测试 那个叫pclint 再加上动态挨个测试 再加上C语言还算得上规范 再加上单片机中断啥的理解的还马马虎虎,哈哈 我的程序应该算上了够稳定了吧啊哈哈

使用特权

评论回复
地板
ayb_ice| | 2011-5-11 08:58 | 只看该作者
就你这认识
还中断养狗好

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
xlsbz + 1
5
xlsbz|  楼主 | 2011-5-11 09:00 | 只看该作者
4# ayb_ice

咋了  放出结论 最好能说出不足。我好改进。

使用特权

评论回复
6
无名蚂蚁| | 2011-5-11 09:06 | 只看该作者
哈哈,我学习

使用特权

评论回复
7
ayb_ice| | 2011-5-11 09:14 | 只看该作者
4# ayb_ice  

咋了  放出结论 最好能说出不足。我好改进。
xlsbz 发表于 2011-5-11 09:00

可能你的主循环早已死了,而中断依然活着,这很常见

使用特权

评论回复
8
yewuyi| | 2011-5-11 09:22 | 只看该作者

使用特权

评论回复
9
yewuyi| | 2011-5-11 09:27 | 只看该作者
1# xlsbz

1、随便
2、在哪里喂并不是关键,重要的是要主循环和中断要能互相检查,任意一个条件不满足则不能喂,至于你的这个串口例子,这是你的代码思想不当造成的。
3、有正确的程序结构的话,最长时间就是一个时基,没什么好算的。
4、废话,只能喂一次,而且在喂之前要用最简短,最可靠的代码结构判断是否满足喂的条件。
5、废话,请通电后立即打开

使用特权

评论回复
10
yewuyi| | 2011-5-11 09:28 | 只看该作者
这个破玩意,过去老帖都讨论了N久了,没必要再讨论了,你去翻老帖即可。

使用特权

评论回复
11
xlsbz|  楼主 | 2011-5-11 09:54 | 只看该作者
1# xlsbz  

1、随便
2、在哪里喂并不是关键,重要的是要主循环和中断要能互相检查,任意一个条件不满足则不能喂,至于你的这个串口例子,这是你的代码思想不当造成的。
3、有正确的程序结构的话,最长时间就是一个时基,没什么好算的。
4、废话,只能喂一次,而且在喂之前要用最简短,最可靠的代码结构判断是否满足喂的条件。
5、废话,请通电后立即打开
yewuyi 发表于 2011-5-11 09:27


首先第5条 不说了 已经定下了 就是经侦稳定了 再开狗

请问 第4条你怎么实现的?
第3条什么时基不时基的?哪里搞来的名词!!
第2条 如果我说的串口例子 如果是你 打算如何解决

使用特权

评论回复
12
xlsbz|  楼主 | 2011-5-11 09:55 | 只看该作者
可能你的主循环早已死了,而中断依然活着,这很常见
ayb_ice 发表于 2011-5-11 09:14


哦 很常见么?你一般一天能看到几次?还是梦里能见到?

我怎么好几年也没看到一次。

请问如何我几年也没看到一次,那么如何模拟?

使用特权

评论回复
13
Txapp| | 2011-5-11 10:18 | 只看该作者
(2)对我目前来说,中断里养狗挺好。比如说我接收串口。 别人写程序串口发送给我。如果那人写的程序发疯了,疯狂发数,我就一直在串口中断出不来了啊!所以我必须得在中断里面喂狗。
==============================================
你的串口接收程序很搞笑,鉴定完毕

使用特权

评论回复
14
ayb_ice| | 2011-5-11 11:43 | 只看该作者
15L
还是别讨骂了

使用特权

评论回复
15
yewuyi| | 2011-5-11 11:52 | 只看该作者
LZ很糟糕。

别人给你讲的你都没懂,你来的哪门子火?

13楼只是说出了俺们不想说的话,但事实上,13楼说的是实情,你的串口程序确实很搞笑,即使我们没有看到你的代码。

你还是尽量先想办法把大家说的都理解清楚后再。。。。。。

不说了,撤把。

使用特权

评论回复
16
gouki_s| | 2011-5-11 12:09 | 只看该作者
不要在中断喂
中断处理尽量短,串口中断也要马上退出。

使用特权

评论回复
17
xlsbz|  楼主 | 2011-5-11 12:12 | 只看该作者
本帖最后由 xlsbz 于 2011-5-11 12:16 编辑
(2)对我目前来说,中断里养狗挺好。比如说我接收串口。 别人写程序串口发送给我。如果那人写的程序发疯了,疯狂发数,我就一直在串口中断出不来了啊!所以我必须得在中断里面喂狗。
==========================================================

楼主太菜了。。。

1、你的程序写得太烂,那如果是4个串口同时按115200双工收发,你不是没辄?
   即使是一个串口,比如我要将一个1MB的文件从串口下到板上的SPI接口的FLASH,115200,那么PC会连续的发数据过来,我一边接收一般写FLASH,大约要100秒时间,按LZ说,这PC是不是疯了?

2、中断里喂狗是死狗,如果在Timer中断里喂,而我在主循环来个while(1) {},就死了,并且MCU不会复位。
============================= ...
coody 发表于 2011-5-11 11:38


我这个串口的例子举得是有问题。
换个例子 采集PWM信号

使用特权

评论回复
18
gouki_s| | 2011-5-11 12:16 | 只看该作者
to楼主,接受数据和处理数据分开。
接受数据尽量快,处理数据按照自己的节奏就可以了

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
zubin0123456 + 1 刚好vu
19
xlsbz|  楼主 | 2011-5-11 12:21 | 只看该作者
17# yewuyi

我是举得串口的例子不合适。我串口程序写的并不差!而是相当的好。

换个例子  采集PWM   50K    或者CAN    CAN发疯

使用特权

评论回复
20
szshawn2010| | 2011-5-11 12:55 | 只看该作者
本帖最后由 szshawn2010 于 2011-5-11 12:57 编辑

看出来了,你们喂狗的目的可能不同,所以见解不同。

LZ的喂狗侧重点可能仅仅是想实现低功耗(不担心死机的情况)。
其他网友拍砖的,可能侧重于MCU死机重启(很担心死机的情况)

使用特权

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

本版积分规则

190

主题

1614

帖子

4

粉丝