Как 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