Go Down

Topic: gestione dei delay (Read 536 times) previous topic - next topic

ƎR

Nov 26, 2011, 02:06 pm Last Edit: Nov 26, 2011, 02:08 pm by er_like_no_other Reason: 1
qualcuno mi spiega come dovrei inserire i delay nei programmi? cioè c'è un modo più correto ed efficacie? hanno una utilità? o servono solo per i programmi tipo blink dove se non metto un delay non risco a vedere il led che lampeggia?
io dovrei fare un programma piuttosto corto che controlla 3 sensori US, elabora i dati e da fuori su 7 pin di output delle combinazioni... siccome i dati vanno ad un altro microcontrollore e quindi non occore che le variazioni siano visibili fisicamente da me, sarei intenzionato a non mettere alcun delay così che i controlli siano veloci e continui...
per leggere i valore dei 3 sensori US uso la funzione pulseIn, può essere che se non metto alcun delay si creino problemi con questa funzione?
cosa mi consigliate di fare per ottenere la massima velocità e efficienza?
grazie
Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

uwefed

Il delay aspetta i milisecondi indicati.
In certe occasioni serve per aspettare una risposta o per dare tempo a un circuito collegato a finire il suo lavoro (per esempio un inizializzazione o una memorizzazione nel caso di EEPROM).
Visto che durante il delay, come anche durante il pulsIn, non é possibile fare nient altro (eccetto codice chiamato da un interrupt) il delay in certi casi é da evitare e si usa millis controllando se il tempo di attesa é passato.

Ciao Uwe 

ƎR

si, ma io mi chiedevo se mettendolo o meno potevo aver problemi nel programma, cioè senza mettere alcun delay dovrei ottenere gli stessi risultati con una frequenza più elevata no?
Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

leo72

Dipende. A volte i sensori hanno bisogno di un tempo di "ricarica" fra una lettura e la successiva per cui devi obbligatoriamente attendere un certo lasso di tempo.
Il delay() è stato introdotto per comodità, ma puoi sostituire il delay da un ciclo fatto con millis(). Vedi l'esempio "Blink without delay".

ƎR

mmmm ecco questo tempo di ricarica non mi è simpatico... l'unico modo per trovarlo è testare i sensori, non è che per caso lo trovo anche nei datasheet?
che vantaggio/differenza c'è ad usare millis?
Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

leo72

Se un sensore ha un tempo di ricarica, lo trovi sul datasheet.
I cicli con millis non fermano l'esecuzione del codice, così puoi eseguire altri compiti nel contempo

ƎR

interessante sta roba, adesso mi informo meglio a riguardo ;)
Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

Go Up