原则1:某段程序在非正常条件下,会死循环,就别喂狗。这是养狗的意义所在。 原则2:某个地方不喂狗,会影响程序正常运行,就喂狗,这是养狗的无奈。
不过,有一种做法是狗的级联,就是在一个关键进程喂狗,但是喂狗之前检查其他的进程是否正常运行。 比如在定时中断中喂狗,但是喂狗前检查一个在主循环里清零的自增变量,就可以保证定时中断和主循环都运行。而且可以灵活扩展主循环的喂狗周期。比较适合喜欢在主循环里delay(N秒)长延时的初学者和懒人。
其实,养狗并不能避免程序在干扰情况下出错,只是能让程序不死循环,死的不那么难看。
在某些危险情况下,比如某个IO高电平输出时间超过一定时间会导致产品损坏(红外遥控就是如此,会导致红外发射管烧毁),就需要狗来复位芯片,此时狗的周期要设短些。
也可以写程序时注意不要写那种一直死循环的程序,就是一段循环程序要尽量考虑正常工作出现的输入条件和非正常工作出现的输入条件,对于后者,也不要出现死循环。这样狗叫的机会就很小了。 |