微控制器通常都需要一个看门狗定时器,用于在大电流或大电压时保持在安全条件下。因此很多微控制器都内置了看门狗定时器。不过,有人也可能愿意用外接电路。外接看门狗电路会检查微控制器代码的完整性,当它判断微控制器固件发生问题时,会将输出保持在安全状态。出错代码或硬件故障都可能导致微控制器固件出问题。
外接定时器与微控制器之间的接口可能有很多种设计方法。例如,可以用一个端口管脚,这样就获得了一种灵活而适应性强的方法,可用于几乎任何微控制器。
对于要为一个输出或一串输出提供能量的应用,需要一个使能信号。可以用这个使能信号,使一只继电器为一个输出器件提供电源。因此,将使能信号转为一个看门狗信号,就成为端口管脚使用的一种新方法。实现这种看门狗电路要做输出端口管脚的切换,而不能让它处在恒定的状态。
多数微控制器的代码都有一个主循环,一般是完成一个任务,或调用较大的函数,以及与中断服务例程交互。如果执行了错误的任务,出现了意外的故障,或运行了意外的矢量,则主循环要么可靠地重新初始化,要么卡住动弹不得。这两种情况都打断了主循环的执行。当出现这种情况时,定时器就需要切断电路的电源。
这种看门狗定时器的实现方法是,一旦运行主循环,就转换一个端口的输出,前提是主循环执行速度为10次/秒~10万次/秒。图1演示了这一概念。实现这种看门狗的方式有很多种。
必须允许转换速率的可变性,因为外来中断和其它不确定的事件都可能造成主循环时间的变动。如果看门狗电路没有足够的宽容度,就可能造成误触发,破坏其目标。看门狗定时器的恢复时间是事件转换之间的最大时间。这种情况出现在系统恢复期间,或叫“limphome”模式时。本电路可以适应恢复周期,但是,如果认为有必要,则恢复期间可以禁止看门狗定时器的输出。
图2中的电路使用了两只双极晶体管。第二只晶体管只是一个继电器驱动器。电路工作原理是从进入的转换方波中去掉直流成分,整流,产生一个平均的直流值。这个波形对晶体管Q1作偏置,使之在持续缺少脉冲情况下关断,从而关断Q2和继电器。改变C2的值也可以改变看门狗定时器对无脉冲的响应速度。该电路接受10Hz?100 kHz之间的转换频率。
改变电容C2,就可以改变主循环所产生的适应频率范围。该电路亦可用于一个3.3V处理器,但继电器必须有自己的5V电源,否则就必须使用较低电压的继电器。