Hallo hat niemand die Kombination nanowii mit ppmsum Emfänger der den gleichen Fehler hat
in MWC 2.2 haben sie den eigentlich hilfreichen befehl "sei();" in die PPM interrupt routiene gebaut. der macht aber bei manchen PPM emfängern probleme(der atmega32u4 hängt sich auf). um das zu beheben muss man "nur" in der RX.ino datei das besagte sei(); entfernen.
Code:
/**************************************************************************************/
/*************** PPM SUM RX Pin reading ********************/
/**************************************************************************************/
// attachInterrupt fix for promicro
#if defined(PROMICRO) && defined(SERIAL_SUM_PPM)
ISR(INT6_vect){rxInt();}
#endif
// PPM_SUM at THROTTLE PIN on MEGA boards
#if defined(PPM_ON_THROTTLE) && defined(MEGA) && defined(SERIAL_SUM_PPM)
ISR(PCINT2_vect) { if(PINK & (1<<0)) rxInt(); }
#endif
// 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(); <------------------------!!!!!!!!!!!!!! das entfernen!
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<4 && diff>FAILSAFE_DETECT_TRESHOLD) GoodPulses |= (1<<chan); // if signal is valid - mark channel as OK
if(GoodPulses==0x0F) { // If first four chanells have good pulses, clear FailSafe counter
GoodPulses = 0;
if(failsafeCnt > 20) failsafeCnt -= 20; else failsafeCnt = 0;
}
#endif
}
chan++;
}
}
#endif
nur zur eklärung dieses "sei();" giebt andere interrupts wieder frei .. ist eigentlich gut da das RX lesen so andere MWC aktionen weniger stört. aber es scheint als ob das bei manchen RX zu problemen führt, da so auch der PPM interrupt wieder ausgelösst werden kann. was man alternativ noch versuchen könnte ist, einen 2-4,7kOhm wiederstand an den signal pins des RX und +5V (VCC) zu machen. meine vermutung ist nemmlich das manche PPM RX wohl irgenteinen hohe frequenz zum normalen signal drauf haben .. und diese lösst den interrupt andauernd aus wenn er immer frei ist. mit dem wiederstand würde man das signal halt nochmal in richtung 5V pullen.
gruß
felix