Периодичность выполнения
- Войдите на сайт для отправки комментариев
Сб, 14/05/2016 - 06:29
Доброго дня
Небольшой вопрос, когда мне нужно что бы что-то выполнялось, допустим, раз в секунду я писал такое:
if (currentMillis - previousMillis > 1000) { previousMillis = currentMillis; //некий код }
В сети нашел такой вариант:
if(millis()%1000==0) { //некий код }
Второй код мне конечно же понравился больше: там нет двух переменных занимающих много места. НО! не получится ли, что второй код будет выполняться через раз, а то и реже? Если контроллер будет чем либо занят и не обработает эту строку вовремя?
класс титановый велосипед для delay без delay().
Oooops.
Мало того! Определенные значения (каждую 43 мсек) millis() банально "проскакивает", поэтому % - ну никак не подходит. :)
класс титановый велосипед для delay без delay().
Все давно придумано до нас. Благодарю.
класс титановый велосипед для delay без delay().
Все давно придумано до нас. Благодарю.
внимательно там
27
unsigned
long
current = micros(); tick = 0;
28
// unsigned long current = millis(); tick = 0;
В сети нашел такой вариант:
Второй код мне конечно же понравился больше: там нет двух переменных занимающих много места. НО! не получится ли, что второй код будет выполняться через раз, а то и реже? Если контроллер будет чем либо занят и не обработает эту строку вовремя?
1. А Вы поинтересуйтесь сколько и каких ресурсов занимает операция %
2. Получится.
Если Вам нужно, чтобы код исполнялся "раз в секунду", а не "не более одного раза в секунду", то следует писать: