DiHALT тоже запутался в миллис?
- Войдите на сайт для отправки комментариев
я привык считать материалы Di Halt с easyelectronic образцом для подражания...
Но в его свежем (2018) уроке про таймеры неожиданно наткнулся на кусок кода, где он борется с переполнением миллис, как наивный новичок:
bool MainTimerIsExpired(const uint32_t Timer) { return ((TimeMs - Timer) < (1UL << 31)); } uint32_t MainTimerRemainingMs(const uint32_t Timer) { if ((TimeMs - Timer) > (1UL < < 31)) { return (Timer - TimeMs); } else { return 0; } }
и пояснение от автора:
Конечно, можно взять да бабахнуть сразу uint64_t на все таймерные переменные и запаса тиков до переполнения нам там хватит на пол миллиарда лет. Но вдруг вы хотите прожить дольше? В конце концов, что такое пол миллиарда лет по сравнению с вечностью? Вот и я про то же!
Поэтому будем разбираться с переполнением. И вычитать мы будем большее из меньшего, а разницу сравнивать с максимально большим отрицательным числом, как если бы мы имели дело со знаковой арифметикой.
Еще больше интересного - в комментариях к уроку...
Что это? У Di Halt уже маразм? или это я чего-то не понял?
"и на старуху бывает проруха"
Просто он первый раз с этим столкнулся и сходу не просёк. С кем не бывает.
Просто он первый раз с этим столкнулся и сходу не просёк. С кем не бывает.
первый раз столкнулся? - да он о программировании МК пишет статьи уже лет десять, как мне кажется
видимо с математикой не очень дружит ...
первый раз столкнулся? - да он о программировании МК пишет статьи уже лет десять, как мне кажется
Первый раз столкнулся с арифметикой uint.) А то что мужик он грамотный - без сомнения.
Кстати, зачастую легче использовать сис тик, нежели миллис. И никакой арифметики, кроме инкремента/декремента.)
Никогда не слышал об этом авторе. А что до миллиса, я же говорил, что эта тема бессмертна, как Вечный Жид. Бывает, чё.
Никогда не слышал об этом авторе.
ни может быть! Может я как-то исказил его ник? Ну DiHalt же, с easyelectronic.ru, пишет статьи об МК уже лет этак десять. На нашем форуме куча ссылок на него... в поиске 6 страниц результатов
Я на ём учился. :) благоговею и преклоняюсь, чо бы там rkit не говорил.
Как-то мимо меня проскочило
Как-то мимо меня проскочило
Вы не одиноки...сейчас в пространные рассуждения можно впасть... )))
PS Мне видимо еще рано
У него еще блог есть.
http://dihalt.ru/
До изи электоникса был.
Когда-то постоянно читал.
Сейчас вяленький, но всё равно интересно.
я привык считать материалы Di Halt с easyelectronic образцом для подражания...
Но в его свежем (2018) уроке про таймеры неожиданно наткнулся на кусок кода, где он борется с переполнением миллис, как наивный новичок:
Что это? У Di Halt уже маразм? или это я чего-то не понял?
А как правильно ?
я привык считать материалы Di Halt с easyelectronic образцом для подражания...
Но в его свежем (2018) уроке про таймеры неожиданно наткнулся на кусок кода, где он борется с переполнением миллис, как наивный новичок:
Что это? У Di Halt уже маразм? или это я чего-то не понял?
А как правильно ?
правильно отнимать и делить )))
А как правильно ?
Вот тут всё разжевано - http://arduino.ru/forum/programmirovanie/velikoe-perepolnenie-millis
ааа, вот спасибо!
даже никогда не задумывался и даже не знал что это какая-то беда и религия. Однажды попался пример и я всегда так и делал, и там было вычитание и сейчас я думаю как можно было догадаться делать сложение. Ну хоть в чем-то мне в жизни повезло!