Estou tentando bit bang dados DMX e isso requer 4us pulsos. Não tendo muita sorte com os resultados, estou verificando o quão bom o Arduino está atrasando ... Parece ser terrível nisso.
Aqui está um pequeno teste rápido que eu fiz:
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
}
E os resultados:
8 4 8 4 4 4 4 4 8 8 8 8 4 8 8 4 4 8 4 4 4 8 8 8 8 8 8 4
Fiquei meio chocado com o quão ruim é a precisão. É o dobro do tempo que eu queria adiar, mas nem mesmo é consistente com o que eu poderia dividir por 2!
Há algo que eu possa fazer para obter resultados corretos e consistentes?