Я провел небольшое исследование и нашел противоречивые ответы в Интернете. Я опрашиваю DS1307 по циклу с помощью Arduino, для запуска которого требуется около 20 мс, поэтому в основном я опрашиваю интерфейс I2C 50 раз в секунду. Влияет ли это на точность времени IC?
ДОПОЛНЕНИЕ Я провел много тестов, и I2C не вызывал дрейфа часов, моя низкая точность была вызвана другой причиной, см. этот вопрос .
Это не должно. Тайминги i2c DS1307 измеряются в микро- и наносекундах. Интервалы в 20 мс ничто по сравнению с этим. Пока вы даете не менее 4,7 мкс между сигналами остановки и запуска I2C, все будет в порядке.
Кроме того:
При чтении или записи регистров времени и даты используются вторичные (пользовательские) буферы для предотвращения ошибок при обновлении внутренних регистров. При чтении регистров времени и даты пользовательские буферы синхронизируются с внутренними регистрами при любом запуске I2C. Информация о времени считывается из этих вторичных регистров, пока часы продолжают работать. Это устраняет необходимость повторного чтения регистров в случае обновления внутренних регистров во время чтения. Цепочка делителей сбрасывается всякий раз, когда записывается регистр секунд. Передача записи происходит при подтверждении I2C от DS1307. После сброса цепочки делителей, чтобы избежать проблем с переносом, оставшиеся регистры времени и даты должны быть записаны в течение одной секунды.
Учитывая, что Dallas/Maxim не указывает минимальное время опроса ниже, можно предположить, что у вас все в порядке.
Но вопрос, зачем так часто его опрашивать?
Не должно, при условии, что шум от I2C или плохо развязанного источника питания не влияет на внутренний генератор или счетчик.
Каз
Феличе Поллано
пользователь17592
Каз