Startracker con arduino

astrobeed:
micros() ha un jitter tipico di compreso tra 0 e 4 us, purtroppo è un errore incrementale

Ecco, è il fatto che sia incrementale che non mi convince.

Se fosse così il codice sottoriportato, che genera 12500Hz usando micros, dovrebbe sbagliare almeno del 5% (un paio di µs medi accumulati ogni semiperiodo), cioe` di circa 600Hz.

Invece su un Arduino Pro Mini (non quarzato) ho un errore dello 0.081% (10Hz), e le cose migliorano ancora con l'Arduino2009: 0.0016% di errore (0.2Hz)

void setup() { pinMode(13, OUTPUT); }

void loop(){
    static uint32_t t = 0;
    if(micros() - t >= 40){
        t += 40;
        digitalWrite(13, !digitalRead(13));
    }
}