Arduino 中的看门狗定时器

看门狗定时器是任何微控制器的重要组成部分。如果程序卡在任何地方,它会重置程序。非常简单,这就是看门狗定时器的工作原理 -

  • 计时器不断增加。

  • 程序必须确保它不断重置定时器,即不允许它溢出。

  • 如果计时器溢出,则意味着程序卡在某处,因此无法重置计时器。定时器溢出时产生中断,复位微控制器。

为了在 Arduino 中实现看门狗定时器,我们使用avr wdt库。

代码如下 -

#include<avr/wdt.h>

void setup() {

   Serial.begin(9600);

   wdt_disable(); //禁用 WDT

   delay(3000);

   wdt_enable(WDTO_2S); //启用 WDT,超时时间为 2 秒

   Serial.println("WDT Enabled");

}

void loop() {

   for(int i = 0; i<5; i++)

   {

      Serial.println("Looping");

      delay(1000);

      wdt_reset(); //重置看门狗

   }

   while(1); //看门狗定时器应该在这里触发

}

如您所见,我们初始化 Serial 并首先禁用看门狗定时器。然后引入 3 秒的延迟。程序不会在这里重置,因为看门狗被禁用。现在,超时为 2 秒的看门狗定时器已启用。这意味着,如果程序没有在每 2 秒内重置此计时器,则看门狗将被触发并重新启动微控制器。

在循环中,我们首先向串行打印 5 秒,确保每秒重置看门狗。到目前为止,该程序运行良好。然后,我们进入一个无限的while循环。在这里,由于我们没有重置wdt,它将被触发并重新启动 Arduino。

请注意,预设看门狗超时值的范围为 15 ms 至 8 s。

以上是 Arduino 中的看门狗定时器 的全部内容, 来源链接: utcz.com/z/322749.html

回到顶部