Loading...
Pages: [1]   Go Down
Author Topic: gestione dei delay  (Read 259 times)
0 Members and 1 Guest are viewing this topic.
Vicenza, Italy
Offline Offline
God Member
*****
Karma: 4
Posts: 829
Ǝ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" Robotics Team
ƎR like no other.

BZ (I)
Offline Offline
Brattain Member
*****
Karma: 160
Posts: 15641
+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

Vicenza, Italy
Offline Offline
God Member
*****
Karma: 4
Posts: 829
Ǝ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" Robotics Team
ƎR like no other.

Forum Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 219
Posts: 16431
Don't know what I do
View Profile
 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


Vicenza, Italy
Offline Offline
God Member
*****
Karma: 4
Posts: 829
Ǝ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" Robotics Team
ƎR like no other.

Forum Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 219
Posts: 16431
Don't know what I do
View Profile
 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


Vicenza, Italy
Offline Offline
God Member
*****
Karma: 4
Posts: 829
Ǝ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" Robotics Team
ƎR like no other.

Pages: [1]   Go Up
Print
 
Jump to: