камрады, полагаю все знают про особенность millis() обнулять после 50 дней? я ищу грамотный способ как правильно в коде вычислять uptime который не будет ресетится каждый 50 дней и главное - потом передать этот uptime по радиоканалу на другую ардуину. то есть я могу на одном МК вычислять uptime, делать проверку на millis > 4 000 000 000 и если больше, то инкрементить отдельную переменную days. но как мне эти данные всего подготовить и передать на другой МК? передавать в unsigned_long - смысла нет - будет тоже самое переполнение на приемнике.. передавать в string или массив char строку вида xxxd:xxh:xxm:xxs - ну чтото дофига байтов будет для передачи.. может я упускаю какойто другой вариант?
Комментарии: 10
Alex
пользовать RTC ( e.g. DS3231) ибо millis() вдобавок и убегает на пару минут в сутки
Dmitriy
А это смотря как с кварцем повезет. Может и на 5 минут уйти
Anonim
грамотней нумерацию пакетов сделать, приемник сам определит, если номера пакетов разбежались сильно - значит ресет был с той стороны. ну или на крайний случай секунды считать, и в uint32 передаваь, но время разбежится
Anonim
модуль ртс не вариант для меня
Denisio
ntp?
Anonim
девайс автономный ни сети и связи кроме радио
Alex
так храните аптайм в секундах и передавайте в секундах
Denisio
Нумерация пакетов вполне ок, их же будет значительно меньше чем миллисекунд
Anonim
хм.. вариант кстати ага а на приемнике уже преобразовывать в дни и так далее