Задать вопрос
@rowaxi

А время с DS1302 всегда-всегда корректное?

Нужна консультация при реализации алгоритма - просто получаем время "чч:мм:сс". Для этого последовательно выполняется 3 чтения - часы, минуты, секунды соответственное. Каждое из которых установили CE, отправили байт, приняли байт, сбросили СЕ. И так 3 раза.
Предположим, что сейчас 10:59:59 и
а) начинаем читать с секунд - 59. И время меняется. Далее минуты, получаем 00 и часы 11. И в итоге у нас 11:00:59 - т.е. на минуту больше, чем надо
б) начинаем читать с часов - 10. Время меняется... 10:00:00 - т.е. на час меньше, чем надо.
Я верно понимаю, что такая ситуация возможна? И решение, если я читаю часы-минуты-секунды и получаю в секундах 00 - то мне следует перечитать минуты ещё раз и сделать вывод.
p.s. Datasheet содержит описание именно "SINGLE BYTE READ".
  • Вопрос задан
  • 237 просмотров
Подписаться 2 Простой 1 комментарий
Решения вопроса 2
@kalapanga
"At the beginning of a clock burst read, the current time is transferred to a second set of registers. The time
information is read from these secondary registers, while the clock may continue to run. This eliminates the need to
re-read the registers in case of an update of the main registers during a read. "
Как раз не надо ничего читать по несколько раз!
Ответ написан
ProgrammerForever
@ProgrammerForever
Учитель, автоэлектрик, программист, музыкант
Ну это не только раз в час может произойти, но и раз в минуту при смене минуты. И вероятность этого можно оценить так:
500мс/1минута=0,83%
500мс/1час=0,014%
Что не так и мало. По-хорошему надо считать 2 раза и сравнить.
Посмотрел даташит по диагонали - там есть ещё и BURST MODE, возможно это именно то что нужно
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
И решение, если я читаю часы-минуты-секунды и получаю в секундах 00 - то мне следует перечитать минуты ещё раз и сделать вывод.

Обычно в таких случаях самый часто изменяющийся разряд читают дважды -- в начале и в конце чтения составного значения и перечитывают значение целиком если этот разряд изменился.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы