| Форум РадиоКот https://radiokot.ru/forum/ |
|
| arduino и DS3231 Установка точного времени https://radiokot.ru/forum/viewtopic.php?f=66&t=187729 |
Страница 1 из 1 |
| Автор: | planus [ Пн апр 03, 2023 21:15:55 ] |
| Заголовок сообщения: | arduino и DS3231 Установка точного времени |
Устанавливаю время в DS3231 таким вот образом: Код: #include <Arduino.h> #include <Wire.h> #include "RTClib.h" RTC_DS3231 rtc; char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}; 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__))); } } void loop () { //rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); DateTime now = rtc.now(); Serial.println("Current Date & Time: "); Serial.print(now.year(), DEC); Serial.print('/'); Serial.print(now.month(), DEC); Serial.print('/'); Serial.print(now.day(), DEC); Serial.print(" ("); Serial.print(daysOfTheWeek[now.dayOfTheWeek()]); Serial.print(") "); Serial.print(now.hour(), DEC); Serial.print(':'); Serial.print(now.minute(), DEC); Serial.print(':'); Serial.print(now.second(), DEC); Serial.println(); } Сравниваю время, которое выводится на Serial монитор с временем на компьютере - разница в лучшем случае 30 сек. На таймере на 30 сек меньше. Почему так? И как тогда выставить время секунда в секунду? |
|
| Автор: | JackSmith [ Пн апр 03, 2023 21:23:06 ] |
| Заголовок сообщения: | Re: arduino и DS3231 |
выставляется время компиляции, но на прошивку и перезапуск микроконтроллера тоже уходит время, отсюда и отставание. |
|
| Автор: | planus [ Пн апр 03, 2023 21:34:18 ] |
| Заголовок сообщения: | Re: arduino и DS3231 |
выставляется время компиляции, но на прошивку и перезапуск микроконтроллера тоже уходит время, отсюда и отставание. Я в общем-то подозревал это, но есть ли способ установить точное время? Иначе какой смысл в этой суперточной микросхеме? Добавлено after 6 minutes 39 seconds: Первое, что приходит в голову, это прописать в скетче время руками, которое наступит, к примеру через две минуты, запрограммировать это все на нажатие кнопки, запустить скетч, дождаться указанного времени и нажать на кнопку. Как обычные часы, короче. Но может есть более продвинутый метод? |
|
| Автор: | OKF [ Пн апр 03, 2023 21:36:07 ] |
| Заголовок сообщения: | Re: arduino и DS3231 |
А какие варианты? На ваш взгляд? Ну и для начала не мешало бы код научиться вставлять как надо. не? Ну и при чём здесь точность ко времени установки? |
|
| Автор: | planus [ Пн апр 03, 2023 21:39:28 ] |
| Заголовок сообщения: | Re: arduino и DS3231 |
А какие варианты? На ваш взгляд? Ну и для начала не мешало бы код научиться вставлять как надо. не? Спасибо, про код. Я тут редко бываю, но теперь буду знать)) Вот нашел вариант: https://doma35.ru/computers/ds3231-usta ... ompyutera/ буду пробовать |
|
| Автор: | 74LS00 [ Пн апр 10, 2023 01:16:21 ] |
| Заголовок сообщения: | Re: arduino и DS3231 Установка точного времени |
Микросхема RTC это не какаято высокоточная схема, это необходимость, без ней даже с плохой точностью не сделать. Если это китайская микросхема, то там нет такой точности, хорошо что она вообще работает. Часы на МК не могут быть точными даже с кварцем, который кстати больше потребляет и требует мощный высоковольтный источник. В процессе работы код может быть занят чемто другим и програмные часы будут уплывать, и это не говоря о прерываниях которые некоторые впихивают. Счётчики времени тоже не бесконечные, и ещё и кривые. В итоге если код не оптимизировать под проц, то он или встанет или будет брехать и в добавок будет много жрать. Куча ненужных проблем с которыми даже никто не борется, а просто ставят микросхему с батарейкой. Я не нашёл никаких автономных способов установки времени в схемах с часами. Видимо это отдельный код обработки кнопок про который не пишут, додумывай сам. И это зависит как от индикаторов так и от управления, может там энкодер быть со своим кодом или джостик. Но всё что я видел это как раз синхронизация по uart с компа по проводу. Сложно неудобно, но видимо всем лень приделывать кнопки. Есть ещё один вариант синхронизация по GPS модулю, но это поднимет цену |
|
| Автор: | BOB51 [ Пн апр 10, 2023 10:59:55 ] |
| Заголовок сообщения: | Re: arduino и DS3231 Установка точного времени |
Во все времена вполне хватало нажима кнопы по сигналу точного времени. Режим кнопки "исполнение по нажатию", а запись всего лишь 0 в счетчик секунд RTC. Далее уже можно читать содержимое из RTC учитывай время обмена. Максимум +/- секунду расхождение будет. |
|
| Автор: | Makar [ Ср май 03, 2023 16:04:30 ] |
| Заголовок сообщения: | Re: arduino и DS3231 Установка точного времени |
А никто не знает как прописать DS3234 вместо DS3231? |
|
| Автор: | Energizer-A [ Ср май 03, 2023 21:56:30 ] |
| Заголовок сообщения: | Re: arduino и DS3231 Установка точного времени |
https://github.com/search?q=DS3234 может почитать и получится? |
|
| Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|


