void setup () { Serial.begin(9600); delay(3000); // ждать открытия консоли
if (! rtc.begin()) { Serial.println("Couldn't find RTC"); while (1); }
if (rtc.lostPower()) { Serial.println("RTC lost power, lets set the time!");
// Закомментируйте ниже строки, как только вы установите дату и время // Следующая строка устанавливает RTC на дату и время компилирования этого скетча rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
Сравниваю время, которое выводится на Serial монитор с временем на компьютере - разница в лучшем случае 30 сек. На таймере на 30 сек меньше. Почему так? И как тогда выставить время секунда в секунду?
Последний раз редактировалось planus Пн апр 03, 2023 21:55:03, всего редактировалось 2 раз(а).
выставляется время компиляции, но на прошивку и перезапуск микроконтроллера тоже уходит время, отсюда и отставание.
Я в общем-то подозревал это, но есть ли способ установить точное время? Иначе какой смысл в этой суперточной микросхеме?
Добавлено after 6 minutes 39 seconds: Первое, что приходит в голову, это прописать в скетче время руками, которое наступит, к примеру через две минуты, запрограммировать это все на нажатие кнопки, запустить скетч, дождаться указанного времени и нажать на кнопку. Как обычные часы, короче. Но может есть более продвинутый метод?
Микросхема RTC это не какаято высокоточная схема, это необходимость, без ней даже с плохой точностью не сделать. Если это китайская микросхема, то там нет такой точности, хорошо что она вообще работает. Часы на МК не могут быть точными даже с кварцем, который кстати больше потребляет и требует мощный высоковольтный источник. В процессе работы код может быть занят чемто другим и програмные часы будут уплывать, и это не говоря о прерываниях которые некоторые впихивают. Счётчики времени тоже не бесконечные, и ещё и кривые. В итоге если код не оптимизировать под проц, то он или встанет или будет брехать и в добавок будет много жрать. Куча ненужных проблем с которыми даже никто не борется, а просто ставят микросхему с батарейкой.
Я не нашёл никаких автономных способов установки времени в схемах с часами.
Видимо это отдельный код обработки кнопок про который не пишут, додумывай сам. И это зависит как от индикаторов так и от управления, может там энкодер быть со своим кодом или джостик.
Но всё что я видел это как раз синхронизация по uart с компа по проводу. Сложно неудобно, но видимо всем лень приделывать кнопки.
Есть ещё один вариант синхронизация по GPS модулю, но это поднимет цену
Во все времена вполне хватало нажима кнопы по сигналу точного времени. Режим кнопки "исполнение по нажатию", а запись всего лишь 0 в счетчик секунд RTC. Далее уже можно читать содержимое из RTC учитывай время обмена. Максимум +/- секунду расхождение будет.
Заголовок сообщения: Re: arduino и DS3231 Установка точного времени
Добавлено: Ср май 03, 2023 21:56:30
Вымогатель припоя
Карма: 1
Рейтинг сообщений: 129
Зарегистрирован: Вт мар 03, 2015 20:13:46 Сообщений: 617 Откуда: рядом с "не резиновой" живу в деревне
Рейтинг сообщения:0
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения