Hi inka,
da bist du ja schon etwas weiter gekommen!
Diesen rhythmuss möchte ich beibehalten, er scheint mir insofern günstig, weil man mit diesem rhythmus die IR-bake identifizieren könnte...
Tatsächlich könnte man Baken mit unterschiedlicher Modulationsfrequenz so erkennen.
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.