Hallo

Ich nehme mal an das PINC & 1 so viel bedeutet wie PortC Pin 1 oder?
Das sind die SDA/SCL-Anschlüsse des XBUS-Steckers. (Es ist aber PortC.0 mit der Wertigkeit 1, ATMega32-Pin 22(SCL)) Ich hatte mir mal für den XBUS einen kleinen Adapter gebastelt:

https://www.roboternetz.de/phpBB2/ze...=322579#322579

...dann kann ich ja erst darauf durch fahren reagieren wenn der komplette Impuls anliegt. ...hab ich da grad einen Denkfehler?
Mach dir mal bewusst, dass die ISR 100000 mal pro Sekunde aufgerufen wird! Das ergibt 50 Impulse pro Sekunde (=alle 20ms), also 50 Messwerte pro Sekunde.

Und wirklich genau wird das doch auch erst wenn ein Schleifendurchlauf des kompletten Programmes dann möglichst kurz ist.
Wir verwenden einen Timerinterrupt, deshalb sind wir unabhängig vom Hauptprogramm das nur die rc_input_x-Werte auswerten muss. Übrigens, was bedeutet in diesem Zusammenhang "wirklich genau"? Wirklich entschiedend ist doch nur, dass die selbe Stellung des RC-Steuerknüppels immer mit dem selben Wert gemessen wird. Je nach gewünschter Auflösung kann man den Timertakt variieren um die Anzahl der ISR-Aufrufe zu optimieren.

Mein RP6 soll eben ein automatisches Programm erledigen bis ich anfange ihn zu steuern.
Dazu muss das automatische Programm prüfen ob ein RC-Input anliegt(rc_input_x != 0) Wenn ein Signal erkannt wird, folgt der RP6 der Fernsteuerung, wenn kein Signal erkannt wird (rc_inputx == 0) geht er wieder in den Automatik-Modus.

Obwohl sich das alles recht einfach anhört, der Hacken ist die orginale Library des RP6. Sie verwendet alle Timer und somit funktioniert meine (und die im RN-Wissen) Lösung nicht ohne Tricks auf dem RP6. Mein hier gezeigter Weg ist eine minimale Lib mit den nötigsten Funktionen. Eine Alternative wäre z.b. den ADC-Interrupt zu nutzen.

Gruß

mic