Добрый день!
Требуется выполнение программы раз в 48 секунд а потом в сон. Получилось добиться только установкой делителя на 16 и таким вот безобразием в цикле:
Но при мониторинге время выполнения программы периодически сбивается - отправка данных может идти несколько циклов по 48 сек, после чего сбивается на 96, а иногда на 144 сек, может вернуться обратно на 48. Закономерности выявить не удалось. Может не правильно делитель выставляю?
Спасибо всем откликнувшимся!
На стопятсотый раз я понял что все мои циклы тут не работают. 48 секунд достигалось видимо только делителем и первым powerdown на 16 сек. Но теперь, когда я оставил только это…
… я не могу поменять частоту, по крайней мере сигнала я не вижу, просто тишина, как будто что-то не то с инструкциями смены частоты и мк просто залипает. Если убрать все CLKPR то мк запускается и работает с периодом ~16 сек.
Проверить ответы по сериал тоже не получается, как только включаю Serial.begin(57600) - сразу пропадает связь с LGTхой ( Timeout. The IDE has not received the success message from the monitor after successfully connecting to it. Could not connect to COM12 serial port).
CLKPR пробовал задавать и “=4” и “=0100” и “= 0b0000100” по данным из разных источников, язык даташита я пока не понимаю.
Подозреваю, что в процессе манипуляций поменял в МК какой-то бит, который не дает поменять частоту, либо что-то еще заблокировал. Буду искать как его “сбросить на заводские” или пробовать с новыми платами как придут.
Еще раз всем спасибо!
Вот специально глянул даташит. Ни в одном из режимов сна не работает тактирование CPU. Меняя биты в CLKPR, вы увеличиваете время выполнения цикла loop(),(общение с датчиками, delay() ), но не время сна
Непонятно, зачем вы в setup меняете частоту. В этом случае частоту наверно правильнее задавать в настройках IDE, и тогда частоты для Serial (и возможно других узлов) будут рассчитаны правильно. Если вы меняете частоту в setup, то частоты serial и I2C тоже меняются и могут стать “неправильными”.
Спасибо за подсказку, код из 1го сообщения все-таки работает, видимо сначала менял делитель и там и там а потом упустил этот момент, вот оно и зависало, сейчас вернулся к тому с чего начал, сон 48.200 сек, то что надо!