1.需要调用

  1. #include <avr/wdt.h>

2.设置看门狗复位时间

  1. wdt_enable(WDTO_2S);

代码时间定义的底层查看

  1. #define WDTO_15MS 0
  2.  
  3. /** \ingroup avr_watchdog
  4. See \c WDT0_15MS */
  5. #define WDTO_30MS 1
  6.  
  7. /** \ingroup avr_watchdog See
  8. \c WDT0_15MS */
  9. #define WDTO_60MS 2
  10.  
  11. /** \ingroup avr_watchdog
  12. See \c WDT0_15MS */
  13. #define WDTO_120MS 3
  14.  
  15. /** \ingroup avr_watchdog
  16. See \c WDT0_15MS */
  17. #define WDTO_250MS 4
  18.  
  19. /** \ingroup avr_watchdog
  20. See \c WDT0_15MS */
  21. #define WDTO_500MS 5
  22.  
  23. /** \ingroup avr_watchdog
  24. See \c WDT0_15MS */
  25. #define WDTO_1S 6
  26.  
  27. /** \ingroup avr_watchdog
  28. See \c WDT0_15MS */
  29. #define WDTO_2S 7
  30.  
  31. if defined(__DOXYGEN__) || defined(WDP3)
  32.  
  33. /** \ingroup avr_watchdog
  34. See \c WDT0_15MS
  35. Note: This is only available on the
  36. ATtiny2313,
  37. ATtiny24, ATtiny44, ATtiny84, ATtiny84A,
  38. ATtiny25, ATtiny45, ATtiny85,
  39. ATtiny261, ATtiny461, ATtiny861,
  40. ATmega48, ATmega88, ATmega168,
  41. ATmega48P, ATmega88P, ATmega168P, ATmega328P,
  42. ATmega164P, ATmega324P, ATmega644P, ATmega644,
  43. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561,
  44. ATmega8HVA, ATmega16HVA, ATmega32HVB,
  45. ATmega406, ATmega1284P,
  46. ATmega256RFR2, ATmega128RFR2, ATmega64RFR2,
  47. ATmega2564RFR2, ATmega1284RFR2, ATmega644RFR2,
  48. AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B, AT90PWM216, AT90PWM316,
  49. AT90PWM81, AT90PWM161,
  50. AT90USB82, AT90USB162,
  51. AT90USB646, AT90USB647, AT90USB1286, AT90USB1287,
  52. ATtiny48, ATtiny88.
  53. */
  54. #define WDTO_4S 8
  55.  
  56. /** \ingroup avr_watchdog
  57. See \c WDT0_15MS
  58. Note: This is only available on the
  59. ATtiny2313,
  60. ATtiny24, ATtiny44, ATtiny84, ATtiny84A,
  61. ATtiny25, ATtiny45, ATtiny85,
  62. ATtiny261, ATtiny461, ATtiny861,
  63. ATmega48, ATmega48A, ATmega48PA, ATmega88, ATmega168,
  64. ATmega48P, ATmega88P, ATmega168P, ATmega328P,
  65. ATmega164P, ATmega324P, ATmega644P, ATmega644,
  66. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561,
  67. ATmega8HVA, ATmega16HVA, ATmega32HVB,
  68. ATmega406, ATmega1284P,
  69. ATmega256RFR2, ATmega128RFR2, ATmega64RFR2,
  70. ATmega2564RFR2, ATmega1284RFR2, ATmega644RFR2,
  71. AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B, AT90PWM216, AT90PWM316,
  72. AT90PWM81, AT90PWM161,
  73. AT90USB82, AT90USB162,
  74. AT90USB646, AT90USB647, AT90USB1286, AT90USB1287,
  75. ATtiny48, ATtiny88,
  76. ATxmega16a4u, ATxmega32a4u,
  77. ATxmega16c4, ATxmega32c4,
  78. ATxmega128c3, ATxmega192c3, ATxmega256c3.
  79. */
  80. #define WDTO_8S 9

3.喂狗操作

  1. wdt_reset();

4.关闭看门狗

  1. wdt_disable();

测试代码:

  1. #include <avr/wdt.h>
  2.  
  3. int test = ;
  4. void setup() {
  5. Serial.begin();
  6. Serial.println("in setup");
  7. Serial.print("test=");
  8. Serial.println(test);
  9. delay();
  10. wdt_enable(WDTO_2S);
  11. }
  12.  
  13. void loop() {
  14. int testLoop;
  15. test++;
  16. // wdt_reset();
  17. Serial.println("in loop");
  18. Serial.print("test=");
  19. Serial.println(test);
  20. delay();
  21. Serial.print("testLoop=");
  22. Serial.println(testLoop++);
  23.  
  24. }

Arduino 看门狗使用的更多相关文章

  1. Arduino - 看门狗定时器(WDT:Watch Dog Timer)

    看门狗定时器(WDT:Watch Dog Timer)实际上是一个计数器. 一般给看门狗一个大数,程序开始运行后看门狗开始倒计数. 如果程序运行正常,过一段时间CPU应该发出指令让看门狗复位,令其重新 ...

  2. 关于Arduino MEGA2560 看门狗对bootloader的依赖

    bootloader在Arduino中起着至关重要的位置,arduino-1.5.6-r2版本中的bootloader对看门狗(watchdog)的bug进行了修复:mega2560其实就是使用的AV ...

  3. STM32之看门狗(独立与窗口)

    广大的互联网网友们,大家早上中午晚上好,我是某某某..对于狗..看过<忠犬八公>的我.无不深深的被狗的义气与灵气所震撼..我也觉得在所有mcu中用看门狗来形容让系统复位的功能是很恰当的.也 ...

  4. zigbee学习之路(十一):看门狗

    一.前言 今天,我们要通过实验学习和认识一下看门狗的使用,看门狗是为了防止防止程序跑飞的,通过不断的喂狗,使看门狗能持续监管程序的运行状态,当程序跑飞时,能及时把程序拽回来. 二.原理与分析 在CPU ...

  5. S3C2416 看门狗

    原理:看门狗自己有个硬件计数器,看门狗开启后,计数器就开始计数,当计数为0时触发,触发事件有两个:系统复位和中断,可设置屏蔽. 在计数器计数到0之前,程序可以重新设置计数器中的数值,称之喟狗.计数器的 ...

  6. STM32之独立看门狗与窗口看门狗总结

    一.独立看门狗 STM32 的独立看门狗由内部专门的 40Khz 低速时钟驱动,即使主时钟发生故障,它也仍然有效. 看门狗的原理:单片机系统在外界的干扰下会出现程序跑飞的现象导致出现死循环,看门狗电路 ...

  7. [ZigBee] 12、ZigBee之看门狗定时器——饿了就咬人的GOOD DOG

    引言:硬件中的看门狗,不是门卫的意思,而是一只很凶的狗!如果你不按时喂它,它就会让系统重启!这反而是我们想要的功能~ 1.看门狗概述 看门狗定时器(WDT,Watch Dog Timer)是单片机的一 ...

  8. 5、CC2541芯片中级教程-OSAL操作系统(PWM+看门狗)

    本文根据一周CC2541笔记汇总得来—— 适合概览和知识快速索引—— 全部链接: 中级教程-OSAL操作系统\OSAL操作系统-实验01 OSAL初探 [插入]SourceInsight-工程建立方法 ...

  9. 给NIOS II CPU增加看门狗定时器并使用

    给NIOS II CPU增加看门狗定时器并使用   配置看门狗定时器: 设置计时溢出时间为1秒 计数器位宽为32位 勾选No Start/Stop control bits 勾选Fixed perio ...

随机推荐

  1. django book学习问题记录

    —————————————————————————————————— 位置:第五章<模型> 问题描述(已解决): >>> p1 = Publisher.objects.c ...

  2. ASP.NET CORE RAZOR :个性化显示

    https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/razor-pages/da1 我们的电影应用有个不错的开始,但是展示效果还不够理想. 我 ...

  3. thinkphp5或3.2 php动态修改config配置文件永久保存

    thinkphp默认的参数方法只能读取,或者动态修改不能永久修改. 这是自己摸索出来的特发出来给需要的朋友(懂的朋友别笑话,功能我自己使用是没任何问题).有些参数还是保存在配置文件方便快捷!不一定所有 ...

  4. Atitit. Object-c语言 的新的特性  attilax总结

    Atitit. Object-c语言 的新的特性  attilax总结 1.1. Object-C语言由 Brad J.Cox于20世纪80年代早期设计,1 1.2. Object-C新增的数据结构: ...

  5. 在Eclipse中使用JUnit4进行单元测试(初级篇、中级篇、高级篇)

    本文转载自以下 初级篇: http://blog.csdn.net/andycpp/article/details/1327147 中级篇: http://blog.csdn.net/andycpp/ ...

  6. SpringSide4 maven

    假设已经安装完 maven  eclipse也装了maven插件 现在要运行springside4 demo 1)下载 SpringSide4 http://www.springside.org.cn ...

  7. Java并发:等待事件发生后所有线程继续执行

    等待某一个指定的事件发生后,才让多个等待的线程继续执行,以下是我能想到的几个方法,欢迎讨论.指正. 1.闭锁CountDownLatch 闭锁是典型的等待事件发生的同步工具类,将闭锁的初始值设置1,所 ...

  8. git 入门二 (基础)

     1.创建新仓库      git init    touch  test.txt  git add --a  git commit -m "fist commit"    初始化 ...

  9. 函数柯里化常见应用---add(1,2) add(1)(2) add(1)(2)(3) add(1,2,3)(4)

    这是一道经典的题目,先上代码: 解法1: function add () { var args = Array.prototype.slice.call(arguments); var fn = fu ...

  10. ios 推送 证书配置

    S的推送证书,有有效期限制,一般为一年.当我们证书过期的时候,就需要重新生成证书了.有一段时间没有上苹果网站了,昨天上去一看,此奥,改版了,下边我们将重新生成一个正式环境的push推送的证书. 1.先 ...