Ich versuche, DMX-Daten zu knacken, und das erfordert 4us-Impulse. Ich habe nicht viel Glück mit den Ergebnissen und überprüfe, wie gut der Arduino verzögert ... Scheint ziemlich schrecklich darin zu sein.
Hier ist ein kurzer kleiner Test, den ich gemacht habe:
unsigned long ptime;
void setup() {
Serial.begin(9600);
}
void loop() {
ptime = micros();
delayMicroseconds(4);
Serial.println(micros() - ptime);
delay(1000); //just to keep the serial monitor from going nuts
}
Und die Ergebnisse:
8 4 8 4 4 4 4 4 8 8 8 8 4 8 8 4 4 8 4 4 8 8 8 8 4 8 4
Ich war ein bisschen schockiert darüber, wie schlecht die Genauigkeit ist. Es ist doppelt so viel Zeit, wie ich verzögern wollte, aber es stimmt nicht einmal damit überein, wo ich einfach durch 2 teilen könnte!
Kann ich irgendetwas tun, um korrekte und konsistente Ergebnisse zu erzielen?