Как заставить функцию не считать сумму если нет изменений?
- Войдите на сайт для отправки комментариев
Чт, 17/02/2022 - 16:38
Привет всем.
Считаю импульсы в прерываниях, умножаю.
Сумму постоянно вывожу на экран (вывода нет в коде).
const uint8_t impPin = PE5; volatile uint8_t imp = 0; uint8_t coef; void setup() { pinMode(impPin, INPUT_PULLUP); attachInterrupt(1, countPulse, FALLING); } void loop() { calculateSum(); } void countPulse() { ++imp; } uint16_t calculateSum() { sum = imp * coef; return sum; }
Вопрос: хочу чтобы цикл loop ничего не делал, если нет изменений.
В данном случае он постоянно вычисляет сумму.
А зачем если ничего не изменилось.
Нужно проверять изменились ли импульсы.
В прерывании это делать нехорошо.
А в самом цикле проверять, количество операций только увеличивать, еще больше времени тратить.
Я придумал проблему, которой нет?
Пусть молотит?
а то!
Спасибо )
это в теории правильно, а для конкретно его случая инкремент на единицу, надо ли - вопрос, как мне кажется там всего одна машинная команда, нет???
"Сумму постоянно вывожу на экран (вывода нет в коде)."
Начнет выводить - спасибо скажет за флажок.
"Сумму постоянно вывожу на экран (вывода нет в коде)."
Начнет выводить - спасибо скажет за флажок.
это да!!!
А coef почему не задан?))
нормально )
"Сумму постоянно вывожу на экран (вывода нет в коде)."
Начнет выводить - спасибо скажет за флажок.
Вывожу через семисегментники со сдвигом, там-то я проверяю.
Удобно, что если сумма не поменялась - цифры так и горят, те что были. Можно еще раз не выводить специально. Но с этим флажком можно один раз проверять, а не два.
Точно спасибо :)