Hi,
danke für die Antwort. Zu deinem Hinweis mit dem Interrupt: Ich nutze den Timer um einen IR-Sensor zu dekodieren. Meine Vorgehensweise habe ich mir aus verschiedenen Quellen zusammengeholt.
Beispiel Start-Bit nach NEC:
9000µs HIGH, 4500µs LOW
Anfangs hatte ich etwas in der Art wie:
Code:
unsigned long startTime, highPulsTime, lowPulsTime;
void waitForStartSequence() {
startTime = millis();
while(IsIrHigh); // call macro which checks if ir is high
highPulsTime = millis();
while(IsIrLow);
lowPulsTime = millis();
lowPulsTime -= highPulsTime;
highPulsTime -= time;
if(highPulsTime >= THE_VALUE_FOR_9600us IsAlmostEqual(lowPulsTime , THE_VALUE_FOR_4500us, TOLERANCE))
Serial.println("X");
}
Das hat zur Erkennung des Start-Bits soweit funktioniert. Um dann aber die weiteren bits auszulesen scheint millis nicht akkurat genug zu sein. Wie könnte da eine saubere Lösung aussehen?
Lesezeichen