Как использовать DS3231 RTC с Arduino для повышения точности millis()?

Я создаю секундомер, который должен иметь точность до миллисекунды. Точности функции millis() в arduino недостаточно, чтобы гарантировать хороший результат.

Я прочитал этот ответ:

Как получить миллисекундное разрешение от DS3231 RTC

Но это не работает, потому что у DS3231 вариант 2 частота не 1КГц, а 1Гц. Затем код считает секунды, а не миллисекунды.

Как я могу решить?

Спасибо


person dmirko    schedule 26.02.2018    source источник
comment
Как долго длится ваш секундомер? Я бы использовал внутренние часы, если вы смотрите не дольше пары минут. Внешний кварц необходим для стабильной работы часов в течение длительного периода времени. В течение коротких периодов дрейфом внутренних часов обычно можно пренебречь.   -  person ooxi    schedule 26.02.2018
comment
От десяти секунд до пяти минут.   -  person dmirko    schedule 26.02.2018
comment
в этом случае я предлагаю пересмотреть, достаточно ли внутренних часов. Если нет, используйте DS3221 RTC в конфигурации, предложенной в моем ответе :-)   -  person ooxi    schedule 26.02.2018


Ответы (1)


Если вам действительно нужна миллисекундная точность, я предлагаю использовать RTC DS3221 в следующем конфигурация

RS2 = 0
RS1 = 1

Это дает вам разрешение 1024 Гц, которое вы можете довольно легко преобразовать в миллисекунды.

person ooxi    schedule 26.02.2018