Библиотека для управления WDT на AVR ATmega328p/32U4/2560 & ATtiny85/84/167
AVR ATmega328p/32U4/2560 & ATtiny85/84/167
К библиотеке есть расширенная документация
Нет
void reset(void); // сброс
void disable(void); // отключить WDT
void enable(uint8_t mode, uint8_t prescaler); // включить WDT с настройками
// mode:
// RESET_MODE - сброс при зависании (при тайм-ауте WDT)
// INTERRUPT_MODE - прерывание при зависании (при тайм-ауте WDT)
// INTERRUPT_RESET_MODE - первый таймаут - прерывание, второй - сброс
// prescaler:
// WDT_PRESCALER_2, WDT_PRESCALER_4... WDT_PRESCALER_1024
Остальные примеры смотри в examples!
#include <GyverWDT.h>
#include <avr/sleep.h>
/*
Пример использования watchdog в "будильника"
Зависимость таймаутов от делителей см. в GyverWDT.h
*/
void setup() {
pinMode(13, OUTPUT);
set_sleep_mode(SLEEP_MODE_PWR_DOWN); // Выбираем нужный режим сна
}
void loop() {
/* Мигаем светодиодом , а в паузах спим */
digitalWrite(13, HIGH);
Watchdog.enable(INTERRUPT_MODE, WDT_PRESCALER_128); // Режим прерываний , таймаут ~1c
sleep_enable(); // Разрешаем сон
sleep_cpu(); // Уходим в сон
digitalWrite(13, LOW);
Watchdog.enable(INTERRUPT_MODE, WDT_PRESCALER_128); // Режим прерываний , таймаут ~1c
sleep_enable(); // Разрешаем сон
sleep_cpu(); // Уходим в сон
}
/* Прерывание watchdog , в нем мы просыпаемся */
ISR(WATCHDOG) {
sleep_disable(); // Запрещаем сон
Watchdog.disable(); // Выключаем watchdog
}
При нахождении багов создавайте Issue, а лучше сразу пишите на почту alex@alexgyver.ru
Библиотека открыта для доработки и ваших Pull Request'ов!
При сообщении о багах или некорректной работе библиотеки нужно обязательно указывать: