Hi Remo,
das Programm analysiert einfach das an einem Eingangspin anliegende
PPM-Signal. Zunächst musst Du herausfinden, ob die Kanal-Impulse aus
Deinem Empfänger positiv oder negativ sind. Ich gehe im Folgenden von
negativen Impulsen (z.B. bei Futaba üblich) aus. Du lässt Deine Software
die Synchronisationsphase entdecken (also Signal=HIGH für länger als
etwa [20ms-Kanalzahl*1.5ms]) und wartest dann auf einen Kanalimpuls. Der
erste Impuls nach der Synchronpause ist für den ersten Kanal usw. Dein
Programm misst jeweils die Impulsbreite (900-2100us), wobei 1500us immer
die Mittelstellung darstellt (kann bei einigen Herstellern anders sein;
viele der Computer-Sender erlauben die Einstellung der Mitte).
Software-Ansätze dafür gibt es viele; alle gehen etwa so:
warten auf Synchronsignal bis Synchronsignal gefunden
Kanaldaten_neu:
Kanal=1
Kanaleinlesen:
Signal H->L : Timer starten
Signal L->H: Timer stoppen
Zeitdauer für Kanal speichern
Kanal:=Kanal+1
Pausenzeit messen
wenn Pausenzeit >= Synchronphase: goto Kanaldaten_neu
sonst: goto Kanaleinlesen
Wenn man Interupts zur Impulserkennung verwendet, was bei der üblichen
Signalqualität problemlos geht, hat der Prozessor riesig viel Zeit für
alle anderen Aufgaben (Weitergabe des Signals, berechnen von neuen
Werten aus Kanaldaten usw.). Selbst ein Timer-gesteuertes Polling des
Signals geht.
Wie gesagt, das lässt sich mit den AVRs in Assembler oder C
implementieren, ohne dass der Prozessor bei den üblichen Taktraten zu
langsam ist.
Zu Fernsteuerungen mit mehr als 9 Kanälen kann ich nichts sagen.
Gruß
Fred