не сталкивался еще, да я и не использовал этот модуль, хватало NTP, это я себе в копилку записал
Там еще и время сохраняется хрен-пойми-почему-таким-способом ))) Не простой записью в байт, а с сохранением в байте двух десятичных разрядов: первые 4 бита - единицы, вторые 4 бита - десятки. Т.е. число 59 там хранится не как b00111011, а как b01011001. Посему данные, полученные из регистров, нужно предварительно декодировать. И так же кодировать перед записью данных в регистры.
И такими извращениями страдают очень многие модули RTC )))
я остановился на том, если и буду использовать модули, то только DS3231
А я вот, по совету друзей, решил приобрести парочку pcf8563, потому что односторонний монтаж.
а в остальном, какова долгосрочная точность?
Примерно как у ds1307
я тут раздел аппаратное начитался, только HARD ROCK DS3231 ![]()
Мне на календарь ![]()
Я бы не сказал, что это извращение. Это формат BCD. А то, что его используют модули часов - традиция, возникшая ещё до Всемирного Потопа.
Использование такого формата позволяет удешевить конструкцию часов (вернее, позволяло, когда контроллеры были дорогущими и дохлющими), потому что от контроллера требовалось только прочитать байт, сдвинуть и передать эти 4 бита декодеру, который сам покажет цифры на 7-сегментнике. Таки декодеров была туева хуча, например, SN74LS247 – https://static.chipdip.ru/lib/408/DOC012408657.pdf (зацените какого года даташит!!! В те времена контроллеры … ну, сами понимаете).
Не извращения это, а формат. Сын мой, так и хочется добавить.)
В те времена меня такие вещи еще не волновали ))
А по моему, ЕвгенийП фантазирует, не? BCD больше для железок важно. Ибо для софта это как 2 пальца. И даже в ассемблере 8080 была DAA.
Почему же?
Есть такое понятие как часовой пояс. С его помощью получить можно что угодно. (хотя, 39 часов - это уже слишком)
Это называется двоично-десятичным форматом. Первый микроконтроллер Intel4004 предназначался для использования в калькуляторах. Там использовалась именно такая форма записи именно для того, чтобы вычислять сразу в десятичной системе.
Соответственно, эта возможность сохранилась и в более поздних процессорах Intel. Ну а часы, видимо, разрабатывались уже “интел-совместимыми”.
Невозможно с этим модулем
Это как?
Вот в ПК стоит модуль, не уверен, что такой-же, но работает примерно так же. А ОС может показывать совсем другое время в зависимости от региональных настроек. За счет чего?
То, что выдает модуль, и то, что показывает обращающаяся к нему программа, совершенно не обязано совпадать.
Так я именно это и сказал. Существуют декодеры, которые сами покажут на семисегментнике, причём привёл даташит такого декодера от 1974 года, когда микроконтроллеров в их современном понимании не существовало в природе.
Это так. Внести туда 39 часов скорее всего получится, но при очередной смене часа значение скорее всего сбросится в нуль. Ибо считать часы модуль умеет либо до 12, либо до 24 часов
За счет того, что просто плюсует часовой пояс к времени по Гринвичу. В каких-то ОС это сразу сохраняется в модуль RTC (23 часа + 03 часа на самом деле равно 02 часа следующих суток, а не 26), в каких-то - в RTC сидит время по Гринвичу, а смещение по часовому поясу плюсуется при запросе времени. В частности, такие подходы практикуют Винда и Линукс (а какая как конкретно - уже не помню ))
а здесь хотят от DS3231 получать время с точностью до миллисекунды
Ох… не знаю. Мой экземпляр ds3231 отстаёт на секунду за минуту. И это при том, что питаю его правильно, от аккумулятора на 3,6 В.
Так подкрути ему…