камрады, полагаю все знают про особенность millis() обнулять после 50 дней? я ищу грамотный способ как правильно в коде вычислять uptime который не будет ресетится каждый 50 дней и главное - потом передать этот uptime по радиоканалу на другую ардуину. то есть я могу на одном МК вычислять uptime, делать проверку на millis > 4 000 000 000 и если больше, то инкрементить отдельную переменную days. но как мне эти данные всего подготовить и передать на другой МК? передавать в unsigned_long - смысла нет - будет тоже самое переполнение на приемнике.. передавать в string или массив char строку вида xxxd:xxh:xxm:xxs - ну чтото дофига байтов будет для передачи.. может я упускаю какойто другой вариант?

Комментарии: 10

  1. Alex

    пользовать RTC ( e.g. DS3231) ибо millis() вдобавок и убегает на пару минут в сутки

    • Dmitriy

      А это смотря как с кварцем повезет. Может и на 5 минут уйти

  2. Anonim

    грамотней нумерацию пакетов сделать, приемник сам определит, если номера пакетов разбежались сильно - значит ресет был с той стороны. ну или на крайний случай секунды считать, и в uint32 передаваь, но время разбежится

    • Anonim

      модуль ртс не вариант для меня

      • Denisio

        ntp?

        • Anonim

          девайс автономный ни сети и связи кроме радио

          • Alex

            так храните аптайм в секундах и передавайте в секундах

            • Denisio

              Нумерация пакетов вполне ок, их же будет значительно меньше чем миллисекунд

              • Anonim

                хм.. вариант кстати ага а на приемнике уже преобразовывать в дни и так далее

Не нашли ответ?

Вам также может быть интересно