arduino中使用watchdog

bug修补者-watchdog

最近在自己的一个Arduino项目中发现了一个很奇怪的异常,系统开机一段时间后出现死机,死机出现的时间和触发原因看起来似乎没有任何规律,检查程序也找不到任何错误,同时因为死机出现的随机性,也很难进行调试。问题可能是程序中的一些隐藏bug,或者与硬件有关,但无论如何,一直没有找到确切原因。因此在其中加入watchdog作为一种修补,至少每次出现异常后系统可以自动复位总比一直卡在那好。


Arduino的WDT

Arduino的语法参考中没有包括WDT,但相关开发板的atmega系列单片机的数据手册均显示是支持wdt的,同时因为Arduino IDE本身是基于AVR GCC编译器,因此可以直接在Arduino IDE中使用AVR的原生语句与函数库。需要包含头文件#include <avr/wdt.h>。可以参考avr的详细库函数说明

avr的WDT 的基本功能语句有三个:

  • WDT使能定时间隔设置wdt_enable(),参数可以从几十ms到几s之间调整,当超过这个时间而单片机又没有复位WDT定时器时,单片机就会进行复位操作,一般来说不要设置过低的时间间隔。
  • WDT禁用语句wdt_disable(),为防止再次烧写程序时复位后反复进入wdt复位&
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值