Как millis() сбрасывает себя на 0
Просматривая документацию по millis()
function , он говорит:
Возвращает количество миллисекунд с момента запуска платы Arduino. запуск текущей программы. Это число будет переполнено (вернитесь к ноль), примерно через 50 дней.
Как это возможно? Обнаруживает ли Arduino переполнение millis()
, а затем сбрасывает значение до 0? Если да, то как это сделать? Я просто хочу знать, что именно происходит внутри с переменной, возвращаемой функцией millis()
.
@Programmer, 👍14
1 ответ
Лучший ответ:
Это не исключительное свойство millis()
. Любой счетчик с ограниченным числом разрядов в конце концов возвращается к нулю. Например, 4-разрядный счетчик обнуляется после 9999
.
Под капотом переменная для millis()
имеет тип unsigned long
, который на Arduino составляет 32 бита. В этом случае 32 бита (двоичные 0 и 1) аналогичны цифрам (от 0 до 9) на счетчике.
Максимум: 11111111 11111111 11111111 11111111
. Оказавшись там, millis()
возвращается к нулю, когда вы добавляете 1
. Максимум (32 "единицы") равен 2^32 - 1
, что равно 4294967295
в десятичной системе счисления. Таким образом, максимальное значение счетчика составляет 4 294 967 295 миллисекунд. В пересчете на дни получается примерно 49,71 дня.
- Как справиться с rollover millis()?
- Использование millis() и micros() внутри процедуры прерывания
- ардуино - миллисекунды ()
- Кнопка с таймером переключения и функцией сброса времени + светодиод обратной связи
- Использовать timer0, не влияя на millis() и micros().
- Торговый автомат Arduino для мониторинга ввода монет в слот во время ожидания ввода пользователя
- Влияет ли `millis()` на длинные ISR?
- nodeMCU — Millis() — Простой счетчик — Как долго горит светодиод?
Старые версии Windows также поддерживали счетчик миллисекунд в 32-битном целом числе, что приводило к неправильной работе многих программ после 49 дней безотказной работы., @Russell Borogove
спасибо ЮРАЙ! Отвечает на затянувшееся сомнение, которое у меня было. ПРОГОЛОСОВАНО ;), @tony gil
PS: я надеюсь, что вы одобрите правки, я чувствую, что они добавляют к вашему превосходному ответу, проясняя пару структур предложений., @tony gil