打印
[国产单片机]

该在程序的什么地方设喂狗点?

[复制链接]
2231|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hotpover|  楼主 | 2007-8-13 01:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
pheavecn| | 2007-8-15 22:24 | 只看该作者

我的看法:

原则1:某段程序在非正常条件下,会死循环,就别喂狗。这是养狗的意义所在。
原则2:某个地方不喂狗,会影响程序正常运行,就喂狗,这是养狗的无奈。

不过,有一种做法是狗的级联,就是在一个关键进程喂狗,但是喂狗之前检查其他的进程是否正常运行。
比如在定时中断中喂狗,但是喂狗前检查一个在主循环里清零的自增变量,就可以保证定时中断和主循环都运行。而且可以灵活扩展主循环的喂狗周期。比较适合喜欢在主循环里delay(N秒)长延时的初学者和懒人。

其实,养狗并不能避免程序在干扰情况下出错,只是能让程序不死循环,死的不那么难看。

在某些危险情况下,比如某个IO高电平输出时间超过一定时间会导致产品损坏(红外遥控就是如此,会导致红外发射管烧毁),就需要狗来复位芯片,此时狗的周期要设短些。

也可以写程序时注意不要写那种一直死循环的程序,就是一段循环程序要尽量考虑正常工作出现的输入条件和非正常工作出现的输入条件,对于后者,也不要出现死循环。这样狗叫的机会就很小了。

使用特权

评论回复
板凳
扎西德勒| | 2007-8-17 22:27 | 只看该作者

楼主的马甲改为 hotpovver就更像。

使用特权

评论回复
地板
McuPlayer| | 2007-8-18 22:16 | 只看该作者

跟三楼想一块去了,哈哈

使用特权

评论回复
5
H0TPOVVER| | 2007-8-19 18:23 | 只看该作者

哈哈

使用特权

评论回复
6
cecwxf| | 2012-1-6 09:45 | 只看该作者
...

使用特权

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

本版积分规则

431

主题

2397

帖子

1

粉丝