delay поставил к примеру. А вообще это стратегия спрашивать один раз в лууп (саады цветут…).
А как соотносятся loop() и текущее время? Они друг от друга абсолютно независимы, так что здесь вопрос не длительности итерации, а в какой момент она началась
атомарность обеспечивается скорее всего в этой функции
Причем, время элементарно считается: 0.2-0.3 секунды (считаем 0.25) раз в 60 секунд, т.е. 1/240. Такая ситуация возникает каждую минуту, т.е. “конфликт” будет случаться каждые 240 минут или 4 часа.
Вот, не в бровь, а в глаз ))
Время обновляется 1раз в секунду. Значит, если loop длится 200мс, и, в худшем варианте время обновилось в конце loop, то в следующем цикле всё гарантировано считается и никаких проблем не будет, т.к. до след. обновления ещё далеко.
Конечно, если понатыкать делеев, то да, выхода нет))
Кратность неминуемо наступит, вопрос лишь времени
Это если loop раздуть до 500мс))
Попробуйте в самом начале loop написать строчку
Serial.println(millis() - lastMillis);
(объявить переменную не забыть конечно)
А в самом конце
lastMillis = millis();
И увидите, сколько длится loop. (+ время на сериал ,конечно)
Раз в секунду его значения будут максимальны
Но не в ардуинке, а в модуле RTC, а значит никак с лупом не синхронизировано
Даже если 1мс - гарантировать несовпадение нельзя.
А как же прерывание? Точность синхронизации - как раз , длительность цикла loop.
В реальности они никак не будут синхронны, даже если будут синхронны на бумаге, а потому кратность наступит…в реальности.
Ну да, если , скажем датчик температуры подвиснет…
Для этого WD таймер есть
у тебя переменная размерностью 4-8 байт, она в любой момент времени может измениться, а чтение из неё идёт скорее всего побайтно (на 8 битной архитектуре)
WD - это дежурный таймер (watchdog timer)?
Нет там никакой синхронизации. Даже если сейчас все нормально, что будет потом, когда ТС решит доработать девайс, никто предположить не возьмется. Потому лучше сразу делать правильно
ЗЫ: я вот вообще прерываниями от RTC не пользуюсь, однако проблем не имею
отож, делай хорошо, плохо оно само получится
Как она изменится, если только обновилась, а до следующего обновления целая секунда?
Про делать правильно я только за, так что принимаю любые предложения по доработке
а вот тут без заглядывания в библиотеку не получится