la minima risoluzione del leOS è il millisecondo, non il microsecondo ![]()
A parte questo errore ortografico, ogni task presente nello schedulatore del leOS viene eseguito con gli interrupt arrestati. Siccome sia la funzione millis() che la funzione Serial sono basate sugli interrupt, il tuo comando Serial.println(millis()) dato all'interno del task verrà eseguito:
- leggendo il valore di millis che non è incrementato perché l'interrupt agganciato all'overflow del timer 0 che viene usato per incrementare il valore di millis è stato disattivato;
- la Serial.println mette i dati nel buffer seriale, da cui i dati sono prelevati e spediti materialmente sulla seriale da un interrupt, per cui essi verranno spediti quando il task sarà terminato.
La somma di questa concomitanza di eventi genera il salto di millisecondi fra ciò che segna millis e ciò che calcola il leOS.