Go Down

Topic: gestione dei delay (Read 553 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
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy