zikkgaz24 писал(а):по времени таймера есть ограничения в первом коде
К сожалению, пока я ковырял блок, от вашего кода ничего не осталось. Прерывания от WDT идут каждую секунду, а переменная в цикле эти прерывания считает, и по превышению, какого-либо порога, блок пускает программу дальше. Так что в блоке можно задать 32767 секунд сна. На общем потреблении энергии почти не сказывается, по сравнению с прерываниями через каждые 8 секунд.
П.С. Я прекрасно знаю потроха контроллеров от Microchip и спокойно их программирую и на Бейсике и на асме, так что работа с регистрами не проблема. А вот с МК от Атмеля у меня не сложилось.
П.П.С. у Микрочипа слип режим вообще одной асм командой включается и WDT без проблем настраивается, но тут это что-то с чем-то. Радиодатчики температуры от CR2032 работают не меньше двух лет.
slavas писал(а):Вачдог
- это таймер, который работает от своего генератора и по переполнению которого происходит либо сброс микроконтроллера, либо прерывание. Программист должен написать программу так, что бы этот таймер постоянно сбрасывался. Вачдог - защита от зависания программы, остановки кварца и т.д.
slavas писал(а):от зависания например при броске питания
- это называется BOD (Brown-out Detection) или BOR (Brown-out Reset) - контроль питания, обычно настроен на уровни 2,7 или 4,3 вольта. При падении напряжения этот модуль сбрасывает МК и держит его в сбросе, пока питание не восстановится. В основном защищает от сбоя ЕЕПРОМ.
slavas писал(а):if(_PWDC >= 1000){asm volatile ("jmp 0x
- этот код не сможет перезагрузить МК при повисании или сбое тактового генератора. Перезагрузит, если, например, библиотека I2C не увидит какую-либо внешнюю микросхему и закольцуется в ожидании. По сути бесполезная вещь.