Pages: [1]   Go Down
Author Topic: gestione dei delay  (Read 486 times)
0 Members and 1 Guest are viewing this topic.
Camisano Vicentino (VI), Italy
Offline Offline
God Member
*****
Karma: 5
Posts: 956
ƎR like no other.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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
« Last Edit: November 26, 2011, 08:08:58 am by er_like_no_other » Logged

Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

BZ (I)
Online Online
Brattain Member
*****
Karma: 266
Posts: 21660
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 
Logged

Camisano Vicentino (VI), Italy
Offline Offline
God Member
*****
Karma: 5
Posts: 956
ƎR like no other.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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?
Logged

Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 332
Posts: 22811
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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".
Logged


Camisano Vicentino (VI), Italy
Offline Offline
God Member
*****
Karma: 5
Posts: 956
ƎR like no other.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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?
Logged

Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 332
Posts: 22811
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged


Camisano Vicentino (VI), Italy
Offline Offline
God Member
*****
Karma: 5
Posts: 956
ƎR like no other.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

interessante sta roba, adesso mi informo meglio a riguardo smiley-wink
Logged

Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

Pages: [1]   Go Up
Jump to: