Как использовать встроенный в ATmega328 RTC (подключив к нему кварц) на Iskra Mini. Не хочется нагромождать внешний RTC модуль. Возможно ли это из-под стандартного бутлоадера и Arduino IDE?
моя твоя не понимай... В наспех найденном на сайте Atmel даташите на Atmega38P нет разделов 18.9 и 18.10. В разделе 17.10 единожды упоминается аббревиатура RTC, но в качестве Real Time Counter, а не Real Time Clock. Тебе надо часы на встроенном осцилляторе? Это можно, но точность будет плавать +/- 3 мин в сутки, и при сбросе или сбое питания все данные пропадут, придется выставлять время заново.
В даташите на Atmega 328 есть упоминание об RTC. Насколько я понял, это независимый асинхронный счетчик, работающий от внешнего кварца на 32.768kHz. И будет он тикать на втором таймере-счетчике (который обычно в ардуине задействован для поддержки ШИМ на каких-то там ногах, и, кстати, в отличие от нулевого, 8 битный). По сути это мало чем отличается от того, что тикает в ардуине на нулевом таймере, и от которого получает свое значение millis(). Ну разве вдруг чуть точнее окажется за счет подбора кварца и его обвязки. Чтобы заработало, насколько я понимаю, нужно заменить внешний кварц на часовой, перевести тактирование на внутренний 8 МГц осциллятор (ибо тактирование от 32.768 кГц выглядит странно) и включить соответствующий бит в ASSR. Возможно, придется также поменять конденсаторы в обвязке кварца. И не уверен, что не пропадет ШИМ на ногах, за которые отвечает второй таймер.
Спасибо за доверие. Правда, я уже начинаю понимать, что этот вариант точно не точнее DS3231 Есть ли возможность реализовать эту функцию чипа, но продолжив потом использовать Arduino IDE, учитывая, что ШИМ мне не пригодится? Как Вы считаете, есть ли смысл экономить 200р. на готовом модуле с DS3231, ради компактности устройства?
В теории можно, но придется сделать некоторое количество вещей вроде учета другой тактовой, которая будет не 16 МГц, а 8. Возможно, что и другие особенности вылезут, о которых и не вспомнишь сразу. Не совсем понятно. что будет с последовательным портом, на который тоже тактовая влияет. Т.е. как минимум понадобится новое описание в boards.txt. И неясно, стоит ли вообще результат риска необратимо изувечить Искру мини. Разве что есть солидный навык пайки особо мелких SMD деталей. И опять же, ради чего? Ведь выигрыш в точности таких "часов реального времени" под вопросом, а полноценного функционала часов реального времени не будет. Будет просто таймер-счетчик. В частности, при пропадании напряжения питания такие "часы" будут терять текущее время. Если нет особых требований к точности, то проще воспользоваться библиотекой Time, которая реализует что-то вроде RTC на внутреннем таймере, включив, если возможно, периодическую синхронизацию от внешнего источника.
Да, я понимаю. По идее и нужен-то только таймер-счетчик. Но он должен знать и помнить время, чтобы определять ночь, а также включаться утром сам, без участия пользователя. Не требовать подстройки и замены питания как минимум месяц. Поэтому я и соблазнился на режим пониженного энергопотребления у чипа + собственный rtc, но вижу, подстраивать придется часто.