PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : div. Möglichkeiten zum auswerten von Modellbauempfängern



The Man
29.05.2008, 08:56
Moin,

ic wollte mal hören, ob es verschiedene Möglchkeiten gibt, das Signal von
Modellbauempfägern auszuwerten.

Meine Idee:
-Timerinterrupt
-pro Kanal eine Variable, die im Int bei HIGH Signal hochgezält wird
- bei fallender Flanke auswerten der jew Variable und = 0 setzten.

wie sind eure Ideen?

Gruß,
The Man

HF SHOOTER
29.05.2008, 20:12
Hi,

so mach ich das auch.

Timerinterrupt alle 0.1ms -> Zählt Variable hoch.

Externer Interupt hängt am Empfänger und ist so konfiguriert das er bei jeder Flanke einen Interrupt bringt.
In der ISR prüfe ich dann ob der Eingang High oder Low ist und lösche bei Low die Variable die ich im Timerinterrupt inkrementiere und bei High vergleiche ich den Wert der Variable ob sie z.B. größer 14 ist (Signal > 1.4ms).
Wie Du sicherlich weißt liegt das Signal von RC-Empfängern im Bereich von 1-2ms, wobei dann 1ms für Min- und 2ms für Max-Ausschlag steht.

mfg
Benny

The Man
30.05.2008, 06:29
So wie ich das verstanden habe, ist das Kozept für einen Kanal ausgelegt?
Der Zusammenhang von Timerint und Flankeninterrupt ist mir nicht klar ;-)

read ya

HF SHOOTER
30.05.2008, 12:37
Hi,

ja genau es ist für einen Kanal.

Der Timerinterrupt inkrementiert eine Variable alle 0,1ms.
Der Flankeninterrupt hat zwei Augaben. Bei einer steigenden Flanke wird die Variable die im Timerinterrupt erhöht wird auf 0 gesetzt.
Je nachdem wie lange (in welcher Stelleung der Steuerknüppel ist) das Signal auf High bleibt wird die Varibale öfters oder weniger oft erhöht.
Bei fallender Flanke wird der Wert der Variable ausgelesen.

Wenn die Variable nun den Wert 15 hat weiß man das 15 * 0,1ms = 1,5ms lang das Signal auf High war also etwas über der Mittelstellung.

mfg
Benny

Besserwessi
30.05.2008, 16:30
Wenn man mehr auflösung braucht wird man besser einen Timer zur zeitmessung nehmen und den PIN Change interrupt nutzen. Der Timer läuft mit relativ hohem Takt (z.B. 1 MHz) durch. Bei ersten interrrupt wird die Startzeit gemerkt und beim 2 ten Interrrupt die Diffreenz bestimmt. Wenn sonst nicht viel Interrupts aktiv sind kann man so die Zeiten bis auf etwa 10 Zyklen genau messen. Wenn es genauer werden soll gäbe es noch den ICP Eingang oder die ICP Funktion über den Komperator und MUX von AD wandler. Dann aber nur jeweils 1 Kanal zur Zeit.