>The PPM input code uses polling (not interrupts) and thus would be extremely difficult to extend to multiple channels.>
If I were a rude impolite person I'd say "b.u.l.l.s.h.i.t" but I'm not, so I won't.
This is polled here: http://homepages.paradise.net.nz/jameskea/
I'm reading in 9 RC channels, 3 analogue piezo gyros and 1 analogue battery monitor, while simultaneously running 3 PID algorithms and driving 4 motors with PWM using an ATMega128.
I've actually tapped off the raw serial PPM signal rather than read individual 1-2ms decoded output pins. The main reason for reading the raw PPM is because the receiver's onboard decoder wasn't high enough resolution for me.
If you choose to read individual decoded outputs though, the important thing to remember is that you don't need to read each and every discrete channel output pin. Doesn't make any sense to me.
If you remember that Ch1 end pulse falls precisely on Ch2 start pulse and Ch3 start pulse is Ch2 end pulse etc. .. you therefore don't need CH2, 4,6,8 etc pins.
I'll leave the implementation up to you, but save your I/Os and interrupts.
Why use more than you need to ?
In fact, polling gives higher count resolution than using interrupts method.
Interrupts waste clock cycles due to the overhead involved.