Как заставить функцию не считать сумму если нет изменений?
- Войдите на сайт для отправки комментариев
Чт, 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 ничего не делал, если нет изменений.
В данном случае он постоянно вычисляет сумму.
А зачем если ничего не изменилось.
Нужно проверять изменились ли импульсы.
В прерывании это делать нехорошо.
А в самом цикле проверять, количество операций только увеличивать, еще больше времени тратить.
Я придумал проблему, которой нет?
Пусть молотит?
а то!
Спасибо )
... void countPulse() { ++imp; catched = true } uint16_t calculateSum() { if (!catched) return; catched = false; sum = imp * coef; return sum; } ...... void countPulse() { ++imp; catched = true } uint16_t calculateSum() { if (!catched) return; catched = false; sum = imp * coef; return sum; } ...это в теории правильно, а для конкретно его случая инкремент на единицу, надо ли - вопрос, как мне кажется там всего одна машинная команда, нет???
"Сумму постоянно вывожу на экран (вывода нет в коде)."
Начнет выводить - спасибо скажет за флажок.
"Сумму постоянно вывожу на экран (вывода нет в коде)."
Начнет выводить - спасибо скажет за флажок.
это да!!!
А coef почему не задан?))
... void countPulse() { ++imp; catched = true } uint16_t calculateSum() { if (!catched) return; catched = false; sum = imp * coef; return sum; } ...нормально )
"Сумму постоянно вывожу на экран (вывода нет в коде)."
Начнет выводить - спасибо скажет за флажок.
Вывожу через семисегментники со сдвигом, там-то я проверяю.
Удобно, что если сумма не поменялась - цифры так и горят, те что были. Можно еще раз не выводить специально. Но с этим флажком можно один раз проверять, а не два.
Точно спасибо :)