【问题标题】:Arduino: Using the watchdog for both preventing failures and energy savingsArduino:使用看门狗来防止故障和节能
【发布时间】:2016-06-22 05:29:33
【问题描述】:

当我试图找到一种可靠的方法来使用看门狗来防止故障(代码锁定)并使用 Arduino 节省电池时,我遇到了 this website

我尝试了代码,它运行良好。但是,我也想使用串行监视器。我尝试添加 Serial.begin(9600);然而,在设置中,串行监视器中显示的大部分内容(来自主循环内的代码)都是奇怪的字符(波特率设置为 9600)。这与配置 wdt 的功能和代码中 Serial.begin(9600) 的位置有关吗?

我还想使用外部中断(通过数字引脚 3 上的按钮)将板从睡眠中唤醒。如何根据当前代码实现?我知道如何在不使用任何看门狗的情况下使用不同的方法使电路板进入睡眠状态,但是,我未能成功使其与此代码一起使用。

非常感谢您的帮助。

【问题讨论】:

  • 串口和看门狗应该不是问题。您是否将看门狗时间设置为短? ... 可能你的例程太长了?
  • 我已将其设置为看门狗触发前的时间为 8 秒。而且程序有延迟,需要2秒多一点,所以看门狗时间太短应该不是问题。我添加了 Serial.begin(9600);在设置后的第一行,并显示程序正在启动的消息。这在串行监视器中显示良好。主循环中的任何打印都只是随机字符。
  • 序列号应该不是问题。看这里:forum.arduino.cc/index.php?topic=63651.0
  • 在 setup(); ,我添加了 Serial.begin(9600);在这一行下面是 Serial.println("starting...");这些在串行监视器中显示良好。主循环()中的任何打印都只是随机字符。

标签: arduino watchdog


【解决方案1】:
  • 如上所述,串行通信应该可以正常工作。你确定你能够在没有代码的看门狗部分的情况下使你的串行通信正常工作吗?我已经使用了网站上给出的看门狗提示以及串行通信,在 Arduino Uno 上没有任何问题,所以我猜串行通信问题出在你代码的其他地方。 你能用看门狗管理部分写一个简单的代码示例吗,在你的循环()的某个地方,一个或两个串行通信,如果你想要一些延迟/无限循环来测试看门狗的触发,把它贴在这里,测试它您的董事会并指出您是否/哪里有问题?

  • 我从未使用过 pin 中断,但似乎 google 通过示例代码给出了一些不错的结果。你试过google给出的结果吗?

https://www.arduino.cc/en/Reference/AttachInterrupt

http://www.allaboutcircuits.com/technical-articles/using-interrupts-on-arduino/

您必须小心选择放置中断的引脚,如 Arduino 参考中所述,只有引脚 2 和 3 支持 Uno 上的中断。

【讨论】:

  • 谢谢琼。我将再次查看有关串行通信的第一部分。对于引脚更改中断,这与引脚 2 或 3 上的电平中断不同。我希望在 A2 和 D3 上有一个引脚更改中断,以将 arduino 从睡眠中唤醒。我尝试将其添加到提供的代码中,但没有提供任何响应。我会继续玩这个。
猜你喜欢
  • 2020-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-21
  • 1970-01-01
相关资源
最近更新 更多