Hallo Ich stecke einfach immer noch mit dem einlesen von 4 RC Kanälen fest. Mein Projekt soll 4 Servokanäle einlesen können. Danach werden 2 Kanäle je nach Wert je ein Servo auslösen. Die anderen beiden Kanäle werden zur steuerung zweier Beleuchtungsausgänge benötigt. Nun soll dies aber Empfängerunabhängig sein. Als ich mein neuer 14-Kanal Empfänger genauer untersucht habe, habe ich bemerkt, dass dieser die Kanäle 7, 8 und 9 Zeitgleich ausgibt. Das selbe ist mit den Kanälen 10, 11 und 12. Da ich mich aber nicht festlegen will, welchen Kanal dafür benötigt wird, weiss ich nicht genau wie ich vorgehen soll. Zumal kann es auch vorkommen, dass diese Elektronik an einem Empfänger angeschlossen wird, welcher die Kanäle nacheinander ausgibt. Irgendwie muss das ja möglich sein, denn die diversen Regel- oder Flybarlesselektronik z.B. bei einem Modellhubschrauber sind ja auch Epfängertyp unabhängig. Hat da wer einen rat? freundliche Grüsse Remo
Mal so zum Anfang: Die 4 Eingänge legst Du auf PortB.7 bis PortB.4, da gibt es (seit jeher) einen Interrupt-on-Change ! Die CPU würde ich mit 8MHz betreiben (intern reicht völlig!) Ein 16-Bit-Timer läuft mit Fosc/4 immer rundum. Den Interrupt aktivierst Du und programmierst in der INT-Routine: Jeden Eingang mit einer Schattenkopie des Eingangs vom letzten INT vergleichen. Wer sich geändert hat: Bei steigender Flanke: den Stand des Timers abspeichern. Bei fallender Flanke: den gespeicherten Timerstand von dem aktuellen Timerstand subtrahieren (Achtung, durch 16-Bit-Arithmetik ist der Timerüberlauf egal) und für den Kanal abspeichern. Schattenkopie aller 4 Eingänge abspeichern, INT löschen... In der Hauptroutine kann man dann die Timerlängen abfragen und entsprechend ausgeben. Es kann zu leichten Ungenauigkeiten kommen, weil die Eingänge nur nacheinander abgearbeitet werden können, aber bei der Auflösung ist das eher unbedeutend.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.