Go Down

Topic: funzione millis() (Read 4 times) previous topic - next topic

leo72

Spetta un attimo.
Delay è un comando che istruisce la CPU del micro a fermarsi ed attendere che passi un certo lasso di tempo. Millis è una funzione che restituisce il numero di ms trascorsi dall'avvio del micro.

L'una non influenza l'altra ma entrambe dipendono da un contatore interno all'Atmega328, un contatore a 32 bit che tiene il conto dei millisecondi. E' lui che va in overflow, per la cronaca.

Tornando al tuo problema, quando sei ad esegure il tuo delay semplicemente non puoi fare altro per cui non puoi neanche controllare quanto tempo è trascorso leggendo millis.

valvale97

quindi ponendo che il delay è di 10ms mi ritroverò la variabile time1 con 10ms in più.
Giusto  ?

leo72

se il tuo programma è questo:

void loop() {
  unsigned long time1=millis();
  delay(10);
  .....CHECK....
}

Poniamo che il contatore interno sia a 0.
Al 1° avvio, time1=millis=0.
A "CHECK" millis sarà time1+millis ossia 10.

valvale97

ok , ho capito grazie dell'aiuto.
Valerio.

lesto


quindi ponendo che il delay è di 10ms mi ritroverò la variabile time1 con 10ms in più.
Giusto  ?

no, il valore restituito da millis() è una COPIA del timer in quell'istante. Se fosse un puntatore, allora non cambierebbe solo quando chiami delay, ma cambierebbe insieme ad ogni millisecondo :-)
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Go Up