WATCHDOG(看门狗)本质上就是一个定时器Timer,具有定时复位功能,其目的是防止主程序发生死循环或者说程序跑飞。在系统中,watchdog相当于是一个监控系统,在系统运行以后也就启动了看门狗的计数器,看门狗就开始自动计数,如果到了一定的时间还不去清看门狗,那么看门狗计数器就会溢出从而引起看门狗中断,造成系统复位。
WATCHDOG通常包含输入(喂狗端)和输出(复位端)两部分。例如:ADM6316;
1、工作过程
当系统(如单片机系统)启动后,看门狗电路中的定时器开始计时。
在系统正常工作时,主程序会定期向看门狗的输入端(喂狗端)发送一个特定的信号(通常是脉冲或电平信号),这个操作被称为“喂狗”。这个信号用于重置看门狗定时器,防止其超时。
如果在一定时间内(即看门狗定时器的超时时间),看门狗没有接收到来自系统的“喂狗”信号,则认为系统可能出现了故障(如程序陷入死循环、系统挂起等)。
此时,看门狗会触发其输出端(复位端),向系统发送一个复位信号。这个复位信号通常连接到系统的复位引脚,导致系统复位并重新启动。
2、分类
- 硬件看门狗:利用独立的硬件定时器电路来实现监控功能。硬件看门狗通常具有独立的电源供应,以确保在系统主电源故障时仍能正常工作。
- 软件看门狗:通过软件编程在系统的某个定时器或计数器上实现监控功能。软件看门狗不需要额外的硬件支持,但依赖于主程序的正常运行来执行监控任务。
现在好多MCU内置WDT,使用内部WDT最大优势就是节省成本体积,但缺点也比较明显容易受软件程序失效影响,稳定性不佳。使用外部WDT IC具有独立的时钟源,稳定性较高,但相应的也会增加一定成本。