方法一
Arduino nano bootloader(老版)不支持看门狗,如果你直接使用看门狗定时器,会卡死在bootloader中。如果要使用看门狗可以使用ISP下载器直接下载程序。这里采用的方法是用一个arduino uno用作ISP编译器的方式来进行给arduino nano下载程序。
1、将arduino uno制作成编程器
把官方代码传到uno板
2、引脚连接
UNO | NANO |
D13 | D13 |
D12 | D12 |
D11 | D11 |
D10 | RST |
5V | 5V |
GND | GND |
注:按照上述连接方式只需给uno供电即可,nano是通过uno供电。
3、软件设置
处理器、端口选项根据自己板子情况自行选择。
上传程序时不要点软件自带的上传,需要用上图中的上传。
4、示例看门狗程序
#include <avr/wdt.h>
void setup() {
// 启用看门狗计时器,设置超时时间为8秒
wdt_enable(WDTO_8S);
}
void loop() {
// 在主循环中执行你的任务
// 喂狗,重置看门狗计时器
wdt_reset();
}
在 Arduino 的看门狗库(avr/wdt.h
)中,提供了以下几个主要的
wdt_enable(time)
:启用看门狗计时器,并设置超时时间。其中,time
参数可以是以下预定义常量之一,表示不同的超时时间:
-
WDTO_15MS
:15 毫秒 -
WDTO_30MS
:30 毫秒 -
WDTO_60MS
:60 毫秒 -
WDTO_120MS
:120 毫秒 -
WDTO_250MS
:250 毫秒 -
WDTO_500MS
:500 毫秒 -
WDTO_1S
:1 秒 -
WDTO_2S
:2 秒 -
WDTO_4S
:4 秒 -
WDTO_8S
:8 秒
wdt_disable()
:禁用看门狗计时器,防止其触发复位。一旦禁用,看门狗计时器将不会在超时时触发。wdt_reset()
:重置(喂狗)看门狗计时器。在程序的主循环中,定期调用这个函数可以防止看门狗计时器超时触发复位。重置计时器会重新开始计时,避免超时发生。
这些函数用于配置和控制看门狗计时器,以确保程序在正常运行时不会触发复位,同时在程序出现故障或死锁时触发复位,从而保持系统的稳定性。根据个人需求进行测试。