Ich noch mal,
mir reicht der Teil des Codes, der das Signal auswertet. Der ganze Rest ist mittlerweile in den Hauptteil übernommen worden.
Also in etwa diesem:
// Read PPM SUM RX Data
#if defined(SERIAL_SUM_PPM)
void rxInt() {
uint16_t now,diff;
static uint16_t last = 0;
static uint8_t chan = 0;
#if defined(FAILSAFE)
static uint8_t GoodPulses;
#endif
now = micros();
sei();
diff = now - last;
last = now;
if(diff>3000) chan = 0;
else {
if(900<diff && diff<2200 && chan<RC_CHANS ) { //Only if the signal is between these values it is valid, otherwise the failsafe counter should move up
rcValue[chan] = diff;
#if defined(FAILSAFE)
if(chan==0) GoodPulses = 0; // clear counter at chan 0;
if(chan<4 && diff>FAILSAFE_DETECT_TRESHOLD) GoodPulses++; // if signal is valid - incrament counter
if(GoodPulses==4) { // If all main four chanells have good pulses, clear FailSafe counter
GoodPulses = 0;
if(failsafeCnt > 20) failsafeCnt -= 20; else failsafeCnt = 0;
}
#endif
}
chan++;
}
}
#endif
Gruß
Carsten