Hi inka,
da bist du ja schon etwas weiter gekommen!
Tatsächlich könnte man Baken mit unterschiedlicher Modulationsfrequenz so erkennen.Diesen rhythmuss möchte ich beibehalten, er scheint mir insofern günstig, weil man mit diesem rhythmus die IR-bake identifizieren könnte...
Dein Ausdruck der Werte scheint zu sagen, dass die Bake in regelmäßigen Abständen erkannt wird, wobei die AN-Phase nur kurz (1-3 Werte) erscheint und die AUS-Phase wohl etwa 4x so lang ist. Halt mal das Oszilloskop an den Treiber der Bake, um zu sehen, ob das so etwa auch gesendet wird (AN-AUS = 1-4).
Der "Leserhythmus" des IR-Signals wird im Wesentlichen bestimmt durch die zeitliche Länge der for(i = 0; i < 499; i++) - Schleife. Darin gibt es einerseits die feste Pause von 100ms (mSleep(100); ), dann die Zeit, die die UART-Ausgabe der Werte (writeIntegerLength(...) u.a.) braucht und die Zeit für die I2C-Kommunikation in der IR-Lesefunktion (read_IR_value(); ).
Messen kann man die Zyklusdauer der Schleife z.B. mit den Stopwatches:
1. Starten am Programmanfang mit: startStopwatch1();
2. Variable definieren: uint16_t zeitdauer;
3. Zurücksetzen auf 0 am Anfang der for(i = 0; i < 499; i++) - Schleife: if (i==498 ) setStopwatch1(0);
4. Lesen des Stopwatch Werts mit: if (i==498 ) zeitdauer = getStopwatch1(); am Ende der Schleife
5. Nach der Schleife den Wert von zeitdauer ausgeben.
Damit wird im letzten Schleifendurchlauf die Dauer in Millisekunden gemessen. Man kann das dann in die Frequenz umrechnen.
Lesezeichen