查看: 21272|回复: 3

Arduino pro mini 休眠与看门狗唤醒

[复制链接]

签到天数: 1 天

[LV.1]初来乍到

发表于 2015-2-28 20:55 | 显示全部楼层 |阅读模式
本帖最后由 sbndjgg 于 2015-2-28 20:58 编辑

学习Arduino休眠与定时唤醒,在其他网站上找到的教程,与大家分享。之前听说bootload不支持看门狗,但我直接用Arduino 1.06 连接 USB转TTL 写入,
没有用USBISP,亲测正常执行,没有问题。
休眠时电流1.3ma,亮灯时2.2ma(板上两个LED的限流电阻由1k换为5.6k)

转自http://donalmorrissey.blogspot.t ... -5-wake-up-via.html
[mw_shl_code=cpp,true]/*
* Sketch for testing sleep mode with wake up on WDT.
* Donal Morrissey - 2011.
* 看门狗程式的介绍,以及沉睡10秒之后亮一下LED
*/
#include <avr/sleep.h>
#include <avr/power.h>
#include <avr/wdt.h>

#define LED_PIN (13)
volatile int f_wdt=1;
ISR(WDT_vect){//看门狗唤醒执行函数
  f_wdt++;
}
void enterSleep(void){
  set_sleep_mode(SLEEP_MODE_PWR_DOWN);
  sleep_enable();
  sleep_mode();/* Now enter sleep mode. */  
  /* The program will continue from here after the WDT timeout*/
  sleep_disable(); /* First thing to do is disable sleep. */
  power_all_enable();/* Re-enable the peripherals. */
}
void setup(){
  digitalWrite(LED_PIN,LOW);
  pinMode(LED_PIN,OUTPUT);
  /*** Setup the WDT ***/   
  MCUSR &= ~(1<<WDRF);  /* 清除复位标志. */
  /* In order to change WDE or the prescaler, we need to
   * set WDCE (This will allow updates for 4 clock cycles).
   */
  WDTCSR |= (1<<WDCE) | (1<<WDE);
  /* 设置新的看门狗超时时间 */
  WDTCSR = 1<<WDP1 | 1<<WDP2; /* 1.0 seconds */  
  /*  设置为定时中断而不是复位  */
  WDTCSR |= _BV(WDIE);  
}
void loop(){
  if(f_wdt>=10){
      digitalWrite(LED_PIN,HIGH);
      delay(20);
      digitalWrite(LED_PIN,LOW);
      f_wdt=0;     
  }
  enterSleep();
}[/mw_shl_code]




该用户从未签到

发表于 2016-6-13 22:09 来自手机 | 显示全部楼层
楼主,那些库找不到啊,你是在哪下载的

该用户从未签到

发表于 2015-3-1 13:47 | 显示全部楼层
一楼,待会试试

该用户从未签到

发表于 2019-12-30 16:14 | 显示全部楼层
感谢楼主分享!请问这个休眠时长可以任意设定吗?再次深表感谢!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

热门推荐

原价299元【语音开发板套件】限时免费领!
原价299元【语音开发板套
教你让OLED动起来!多重字符串版!
教你让OLED动起来!多重字
大家都知道:arduino单片机是单线程的 而上次教程中的多段字符串的运行速度必须一致
TTGO T8 1.7.1使用TFT_eSPI库驱动2.4寸ILI9341屏幕显示板载SD内图片
TTGO T8 1.7.1使用TFT_eSP
TTGO T8 1.7.1采用Espressif官方ESP32-WROVER模块制作,4MB闪存和8MB PSRAM,支持TF
TTGO TFT屏幕Arduino使用的小结
TTGO TFT屏幕Arduino使用
TTGO TFT屏幕是一款ESP32和1.44寸LCD屏幕组合的产品,屏幕由ST7789驱动。ESP32自带520
分享我的第一个点灯程序——家庭控制中心
分享我的第一个点灯程序—
2020年,在B站上初识ESP8266,被ESP8266的低门槛、高性价比深深吸引,2020年6月20日,
Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
快速回复 返回顶部 返回列表