看门狗定时器 + Arduino

电器工程 Arduino 计时器
2022-01-11 22:47:24

如何使用 Arduino 设置硬件看门狗定时器?

3个回答

atmega 芯片中已经内置了一个看门狗定时器。你可以用avr/wdt.h它来操纵它。

一个简单的例子:

#include <avr/wdt.h>

void setup() {  
  wdt_enable(WDTO_500MS); // have the wdt reset the chip
  // if 500ms passes without a reset
}

void loop() {   
  wdt_reset(); // reset the wdt
}

有许多专用的硬件看门狗芯片可用,但使用普通的 555 定时器 IC 和几个支持部件很容易做到。将 555 配置为具有很长“高”周期和相对较短(可能 0.3 秒)“低”周期的非稳定模式,输出可以通过二极管连接到 Arduino 的复位引脚,使看门狗成为集电极开路设备。然后,Arduino 可以使用数字输出周期性地重置看门狗,以打开晶体管,使连接到 555 的定时电容器放电,防止其到达将导致其重置 Arduino 的触发点。

有关执行此操作的项目的一些基本信息,请访问http://www.practicalarduino.com/news/id/471

我听说 WDT 和常规引导加载程序报告了一些问题,因此您可能想尝试使用它的另一个引导加载程序,例如 Adaboot。

此外,除了重置之外,您还可以使用 WDT 做更多的事情。我推荐http://www.atmel.com/dyn/resources/prod_documents/doc2551.pdf