Синхронизация времени МК

топ 100 блогов eddy_em13.11.2023 Что-то поисковики как на русском, так и на английском выдают какую-то чушь. Я же думаю сделать нечто вроде NTP по CAN'у. Т.к. никакие мои железки в 22 веке работать не будут, можно не париться и хранить UNIX time в 32-битном счетчике.
Соответственно, как я себе представляю процесс синхронизации: МК обрабатывает приходящие по CAN пакеты в прерывании, помещая их в очередь, но реагируя на особые команды сразу же. Особые команды - это запрос текущего времени (отправляем в шину значение счетчика секунд и регистра CNT - как раз в 8 байт стандартной посылки влезаем) и установка нового времени (сразу меняем значение счетчика и CNT на новые + сменяем на эти значения переменнуы "время последней синхронизации" + CNT последней синхронизации). Команды, которые "могут подождать" - отправка последнего времени синхронизации, отправка текущих значений PSC и ARR, а также прием их новых значений (которые по некоему алгоритму вычислит компьютер). Вот с алгоритмом-то и загвоздка.
Я вижу алгоритм так: сначала запрашиваем у МК текущие значения PSC/ARR, а также время и CNT последней синхронизации. Затем отправляем на МК последовательно раз 20-50 команду запроса текущего времени. Каждый раз запоминаем время отправки запроса и приема ответа, отнимаем от времени получения ответа половину длины промежутка - получаем условное время на МК, приведенное к задержке в отправке - что нам в принципе и надо. На каждом шаге вычисляем дельту. Затем считаем медиану - она и будет искомой поправкой. По времени последней синхронизации и полученной поправке вычисляем наиболее близкие PSC и ARR. А затем отправляем на МК команду установки нового времени и настройки "часового" таймера.

Как думаете, сработает такой алгоритм?
P.S. Желаемая точность передачи временных меток — ±0.5мс. И, соответственно, уход часов после ряда синхронизаций хотелось бы иметь в пределах 1мс в сутки (11.6 миллиардных). Хотя, в принципе, синхронизацию можно хоть 1 раз в час делать… Все-таки, кварц без термостабилизации на 10℃ изменения температуры выдает нестабильность аж в 10ppm!

Оставить комментарий

Архив записей в блогах:
Знаете, я не устаю поражаться людской глупости, безграмотности, и, как следствие, жёсткости, дурно попахивающей религиозным мракобесием. Эта история о милой девушке-художнице из Питера, у нее были (сейчас уже нет) социальные сети и много подписчиков. В одном инстаграме 22 тысячи. ...
  Вот решил пофантазироватьснова на тему  того, какого бы человека я хотел видеть президентом. Представим что прошли выборы и к власти пришла рельная сильная личность, готовая к решительной борьбе, а не новый актер из группы поддержки ...
Это когда в загороде в воскресенье к полудню с чашкой кофе вышла, поискать дела. Лучше бы не найти, конечно, и просто посидеть с чашкой на качели садовой, но разве ж так бывает! ...
Американские экстремалы натянули разноцветную паутину в 122 метрах над дном ущелья в пустыне Мохаве. Что может быть более экстремальным, чем полет над активным вулканом? Прошло более трех дней, чтобы построить и потребовало усилий более чем 50 человек. Крутая идеальная игра для ...
Ну что, пришла пора сдерживать данные обещания. Счет кексам я потеряла, общее их количество явно превысило 25 штук. А все почему? Потому что, во-первых, некоторые инструкции вообще умалчивают о том, что в итоге получится более, чем один экземпляр. Во-вторых, у меня развилась реальная ...