请问放狗的时机?

[复制链接]
4659|28
 楼主| xlsbz 发表于 2011-5-10 12:35 | 显示全部楼层 |阅读模式
本帖最后由 xlsbz 于 2011-5-10 17:24 编辑

用的是C8051F单片机

现在的做法是
(1)关闭狗
(2)配置定时器串口...
(3)打开看门狗:即放狗
(4)程序进入while循环

现在担心万一在第(2)部分程序死了咋办啊?是不是我考虑过头了?

大家如何处理的?
多谢  最好说下想法

我的意思是初始化定时器串口的时候没有打开看门狗  这种弄法是不是有点冒险?
carl_lee 发表于 2011-5-10 13:01 | 显示全部楼层
可以尽早放狗,进入主循环前记得喂狗就行
sysdriver 发表于 2011-5-10 13:11 | 显示全部楼层
喂狗的时间足够配置了吧,如果有延时程序,再喂就得了。
ayb_ice 发表于 2011-5-10 15:08 | 显示全部楼层
关键是要喂饱
走1K米怕摔跤,那走1米也可能摔跤
 楼主| xlsbz 发表于 2011-5-10 17:24 | 显示全部楼层
我的意思是初始化定时器串口的时候没有打开看门狗  这种弄法是不是有点冒险?
yewuyi 发表于 2011-5-10 17:53 | 显示全部楼层
一上电就直接打开看门狗。

为什么要先关闭看门狗?看门狗一直打开好了,初始化程序一般都很短小的,只要在看门狗溢出周期内处理好就可以。
例如:
void main(void)
{
OpenWatchdog();
InitSys();
while(1){
             ClearWatchdog();
             TaskN();
             }
}

评分

参与人数 1威望 +1 收起 理由
xlsbz + 1

查看全部评分

 楼主| xlsbz 发表于 2011-5-10 19:11 | 显示全部楼层
有道理  也没道理!!!
 楼主| xlsbz 发表于 2011-5-10 21:45 | 显示全部楼层
其他人高见?

版主哪去了?
程序匠人 发表于 2011-5-10 21:52 | 显示全部楼层
软件可以关闭的狗,不是好狗
highgear 发表于 2011-5-10 21:58 | 显示全部楼层
楼主的担心是多余的。

如果在第(2)部分程序死了,这说明的硬件和软件有严重的问题,这不是靠狗能解决的。系统的安全是靠自身的强壮,而不是寄托在一条癞皮狗上。

评分

参与人数 1威望 +1 收起 理由
xlsbz + 1

查看全部评分

ming117284 发表于 2011-5-10 22:39 | 显示全部楼层
我觉得10楼说的有道理
 楼主| xlsbz 发表于 2011-5-11 08:06 | 显示全部楼层
本帖最后由 xlsbz 于 2011-5-11 08:08 编辑
楼主的担心是多余的。

如果在第(2)部分程序死了,这说明的硬件和软件有严重的问题,这不是靠狗能解决的。系统的安全是靠自身的强壮,而不是寄托在一条癞皮狗上。 ...
highgear 发表于 2011-5-10 21:58



说得有道理,但不能说是癞皮狗。应该说是一只可爱的小狗
 楼主| xlsbz 发表于 2011-5-11 08:07 | 显示全部楼层
6# yewuyi

因为我初始化程序里面需要一段软件延时就是“死等”。
ayb_ice 发表于 2011-5-11 08:25 | 显示全部楼层
狗只是药,不是万能药,更不是救命药
现实中很多人都把它当万能药,救命药
 楼主| xlsbz 发表于 2011-5-11 08:26 | 显示全部楼层
一上电就直接打开看门狗。

为什么要先关闭看门狗?看门狗一直打开好了,初始化程序一般都很短小的,只要在看门狗溢出周期内处理好就可以。
例如:
void main(void)
{
OpenWatchdog();
InitSys();
while(1){
        ...
yewuyi 发表于 2011-5-10 17:53



定了,安你说的弄!!我发现我现在胆子是越来越小了!!!
yewuyi 发表于 2011-5-11 08:37 | 显示全部楼层
6# yewuyi

因为我初始化程序里面需要一段软件延时就是“死等”。
xlsbz 发表于 2011-5-11 08:07


你的代码不规范而已,你完全可以把这个等待转到后面的循环中。
 楼主| xlsbz 发表于 2011-5-11 08:43 | 显示全部楼层
你的代码不规范而已,你完全可以把这个等待转到后面的循环中。
yewuyi 发表于 2011-5-11 08:37


呵呵  打算按照你的方法弄了.

不过我的代码也不是不规范。我要在我单片机初始化的时候启动另一个处理器。这个处理器启动时间比较长,我就得干等着了
yewuyi 发表于 2011-5-11 09:31 | 显示全部楼层
呵呵  打算按照你的方法弄了.

不过我的代码也不是不规范。我要在我单片机初始化的时候启动另一个处理器。这个处理器启动时间比较长,我就得干等着了 ...
xlsbz 发表于 2011-5-11 08:43


我已经说过了,你的代码想法不当,即使这个时间需要10000H,代码也不应该写成这样。

不要再解释了,你的想法我们都很清楚。
原野之狼 发表于 2011-5-11 09:43 | 显示全部楼层
妥善处理延时的问题,不要让延时操作占用程序的主流程。
 楼主| xlsbz 发表于 2011-5-11 09:58 | 显示全部楼层
我已经说过了,你的代码想法不当,即使这个时间需要10000H,代码也不应该写成这样。

不要再解释了,你的想法我们都很清楚。
yewuyi 发表于 2011-5-11 09:31


应该咋写 ?指点一下.........
您需要登录后才可以回帖 登录 | 注册

本版积分规则

190

主题

1614

帖子

4

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