打印

请问放狗的时机?

[复制链接]
3024|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米也可能摔跤

使用特权

评论回复
5
xlsbz|  楼主 | 2011-5-10 17:24 | 只看该作者
我的意思是初始化定时器串口的时候没有打开看门狗  这种弄法是不是有点冒险?

使用特权

评论回复
6
yewuyi| | 2011-5-10 17:53 | 只看该作者
一上电就直接打开看门狗。

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

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
xlsbz + 1
7
xlsbz|  楼主 | 2011-5-10 19:11 | 只看该作者
有道理  也没道理!!!

使用特权

评论回复
8
xlsbz|  楼主 | 2011-5-10 21:45 | 只看该作者
其他人高见?

版主哪去了?

使用特权

评论回复
9
程序匠人| | 2011-5-10 21:52 | 只看该作者
软件可以关闭的狗,不是好狗

使用特权

评论回复
10
highgear| | 2011-5-10 21:58 | 只看该作者
楼主的担心是多余的。

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

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
xlsbz + 1
11
ming117284| | 2011-5-10 22:39 | 只看该作者
我觉得10楼说的有道理

使用特权

评论回复
12
xlsbz|  楼主 | 2011-5-11 08:06 | 只看该作者
本帖最后由 xlsbz 于 2011-5-11 08:08 编辑
楼主的担心是多余的。

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



说得有道理,但不能说是癞皮狗。应该说是一只可爱的小狗

使用特权

评论回复
13
xlsbz|  楼主 | 2011-5-11 08:07 | 只看该作者
6# yewuyi

因为我初始化程序里面需要一段软件延时就是“死等”。

使用特权

评论回复
14
ayb_ice| | 2011-5-11 08:25 | 只看该作者
狗只是药,不是万能药,更不是救命药
现实中很多人都把它当万能药,救命药

使用特权

评论回复
15
xlsbz|  楼主 | 2011-5-11 08:26 | 只看该作者
一上电就直接打开看门狗。

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



定了,安你说的弄!!我发现我现在胆子是越来越小了!!!

使用特权

评论回复
16
yewuyi| | 2011-5-11 08:37 | 只看该作者
6# yewuyi

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


你的代码不规范而已,你完全可以把这个等待转到后面的循环中。

使用特权

评论回复
17
xlsbz|  楼主 | 2011-5-11 08:43 | 只看该作者
你的代码不规范而已,你完全可以把这个等待转到后面的循环中。
yewuyi 发表于 2011-5-11 08:37


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

不过我的代码也不是不规范。我要在我单片机初始化的时候启动另一个处理器。这个处理器启动时间比较长,我就得干等着了

使用特权

评论回复
18
yewuyi| | 2011-5-11 09:31 | 只看该作者
呵呵  打算按照你的方法弄了.

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


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

不要再解释了,你的想法我们都很清楚。

使用特权

评论回复
19
原野之狼| | 2011-5-11 09:43 | 只看该作者
妥善处理延时的问题,不要让延时操作占用程序的主流程。

使用特权

评论回复
20
xlsbz|  楼主 | 2011-5-11 09:58 | 只看该作者
我已经说过了,你的代码想法不当,即使这个时间需要10000H,代码也不应该写成这样。

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


应该咋写 ?指点一下.........

使用特权

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

本版积分规则

190

主题

1614

帖子

4

粉丝