Hallo sailerho

Ich vermute mit "3x digitaler Eingang (PWM)" meinst du die Signalleitungen vom Empfänger. Der R/C-Empfänger gibt auf jedem Kanal über eine Leitung Impulse aus, welche circa. zwischen 1ms und 2ms Länge hat. Die Auswertung der Länge des Impulses gibt an welche "Knüppel-Stellung" der Benutzer an seiner Funke hat. Das wiederholt sich alle 20ms.

Am Effektivsten, also damit der uC außer die Signale vom Empfänger zu erfassen auch Anderes macht, legt man eine solche Signalleitung vom Empfänger an ein Interrupt fähigen Port. Ein Interrupt wird durch den Wechsel des Pegels am Pin ausgelöst und der uC springt in eine sogenannte Interrupt-Service-Routine, kurz ISR. Beim mega8 kann man da den Pin INTO, also vom Port D den Pin 2, das ist physikalisch am mega8 oder mega168 das Pin 4 verwenden.

Jetzt wird ein Timer gestartet.

Wenn der Impuls zu Ende ist, der Pegel also wieder von logisch "high" auf "low" geht, wird der INTO ein zweites Mal ausgelöst, der aktuelle Wert des Timers erfasst und aus dem Wert des Timers ist eine Impulslänge als digitaler Wert verfügbar.

Der mega168 hat für unsere Anwendung gegenüber dem mega8 den Vorteil an praktisch jedem Pin ein Interrupt auslösen zu können. Diese "Pin Change Interrupt Requests", "PCINT0" bis "PCINT23" sind in jeweils Gruppen von 8 zusammengefasst. Wenn irgend ein Interrupt request in der Gruppe ausgelöst wird, also z.B. PCINT0 bis PCINT7, lässt dieser den uC in die ISR PCINT0 springen, wo man analog zu oben vorgeht. Für die nächsten 8 PCINTxx wird die ISR PCINT1 und für die letzten 8 die ISR PCINT2 angesprungen. Man fasst also die Auswertung der Signale von bis zu 8 Kanälen des RC Empfängers in einer solchen Gruppe zusammen.

Der Kode hierzu ist wie bereits verwiesen bei RCline.de herunter ladbar.
Dort wird die erkannte Impulslänge mit einer Auflösung von mehr als 800 Schritten auf einem LCD Display angezeigt. Die HW ist "idiotensicher", also auch für mich erfassbar gezeigt und beschrieben.

Um einen Fahrtregler zu implementieren braucht man diese Werte nur noch passend in eine PWm Steuerung einfliessen zu lassen. Auch diese HW und Software ist fertig verfügbar.

Durch die Lernkurve schlauer geworden setzen wir jetzt für die H-Brücke im Leistungsteil einen BTS840 ein, der bei pollin für 1,95 € erworben werden kann und 2 IRF540 die je für 0,54 € bei Reichelt erworben werden können. Mit einem 74HC08 und einem 74HC86 implementieren wir die Logik für Vorwärts- und Rückwärts-Betrieb des Motors ein. Der uC mega8 kostet 1,70 €, der mega168 3,20€. Ich würde an deiner Stelle einen der Fahrtregler im mega168 mit implementieren und einen 2. Mit einem mega8 um Kosten zu sparen.

Ich habe es im 2. Anlauf geschafft die Schaltung erfolgreich aufzubauen, basierend auf dem Atmel Einführungskurs bei ww.rcline.de und hatte als Verlust eine Lochrasterplatine, ein paar IC Sockel, Widerstände, Elkos, Poti und Zeit. Nun bin ich aber auch denkbar schwerfällig. Jetzt baue ich einen Fahrtregler an einem Abend auf und er läuft auf Anhieb.

Ich kann Dir aus eigener Erfahrung nur sagen, dass das durchlaufen dieser Lernerfahrung einem gerade im Schiffsmodellbau unglaubliche Möglichkeiten eröffnet und völlig neue Wege Funktionen zu implementieren.
So werde ich statt einem Gummi zum straff halten der Schote jeweils einen kleinen 12V DC-Motor, bei Pollin für 0,95 € zu erwerben, verwenden. Ich habe dazu unter "digitales Gummi" bereits einen Thread geschrieben.