Проверено на совместимость с optiboot Arduino UNO/Nano или если вы вообще не пользуетесь загрузчиком.
Используемая версия FLProg 7.3.0.
Прикладываю свои элементы.
WDT_M328P_8sec_(Code_-_Basic).ubi - собственно само включение WDT на 8 сек.
WDT_CHK_RESET_(Code_-_Basic).ubi - это только для проверки работы WDT, при включении в проект "завешивает"
систему через 4 сек. Итого перезагрузка системы идет через 4+8 = 12 сек.
termoregulyator_ universal_v04.flp - Как пример использования блоков прикладываю немного доработанный "напильником" проект Грачика универсального термостата на DS18B20/DHT11/DHT22.
Ну и до кучи:
M328p_EMC_IMMUNE_(Code_-_Basic).ubi - для увеличения помехоустойчивости все неиспользуемые выводы микроконтроллера
переводим на выход с логическим "0" (это редко кто делает, а зря ).
PS (Для тех кто хочет понять как это работает в коде).
Оно не подвешивает систему при старте, т.к. перед стартом основной программной секции
запускается программный код который сбрасывает флаг WDRF в SFR MCUSR и выключает "собаку" до старта setup() Arduino кода.
(По идее этот флаг должен обрабатывать загрузчик бутлоадера, но это реализовано не во всех загрузчиках или его вообще нет)
Код: Выделить всё
uint8_t mcusr_mirror __attribute__ ((section (".noinit")));
void get_mcusr(void) __attribute__((naked)) __attribute__((section(".init3")));
void get_mcusr(void)
{
mcusr_mirror = MCUSR;
MCUSR = 0;
wdt_disable();
}
Код: Выделить всё
void setup(){
wdt_enable(WDTO_8S);
wdt_reset();
..
после старта программы (те. идёт вечная мнгновенная перезагрузка до момента повторного отключения/включения питания).