


Добавлено через 2ч. 58мин.:
Короче скобу еще подпилил, короче норм, теперь не пропускает, все ок, автору спасибо!!!
Отв.1040 05 Июня 26, 19:51



void ExternalInputISR() {
static unsigned long lastFall;
static unsigned long lastRise;
static unsigned long lastCall;
static bool newPeriod = 1;
float pwmPeriod;
float pwmOnTime;
float now = micros();
if (digitalRead(pinExtControl) == LOW) {
// Falling edge
lastFall = now;
newPeriod = 1;
} else if (newPeriod) {
// Rising edge
pwmPeriod = now - lastRise;
pwmOnTime = lastFall - lastRise;
const double duty = extCtrlPwmFactor*pwmOnTime / pwmPeriod;
const double extCtrlAvgWeight = 1.0 / extCtrlAvgNum;
if (duty >= 0 && duty <= 1) extPwmDutyCycle = (extPwmDutyCycle + extCtrlAvgWeight * duty) / (1 + extCtrlAvgWeight);
lastRise = now;
newPeriod = 0;
extPwmPeriodNum++;
}
}