Pages: [1]   Go Down
Author Topic: cambiare risoluzione del timer  (Read 362 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Jr. Member
**
Karma: 1
Posts: 99
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ciao  a tutti, vorrei saper come sia possibile cambiare la risoluzione del timer di arduino ,nel mio caso la uno.
Ho calcolato che il massimo tempo osservabile e T pari a 16 ms, calcolato come 256/fc, con fc pari a 16 MHz, se io volessi portare T aper esempio 150 ms come si potrebbe fare?...o meglio devo usare un prescaler pero guardando i vari esempi su internet non ci ho capito molto.
grazie mille in anticipo..
Logged

Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 114
Posts: 7183
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

L'esperto di timer sul forum è sicuramente Leo72.
Però spiega meglio cosa vorresti fare perché sinceramente non ho capito granché.  smiley-roll
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

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

Stai parlando di un timer ad 8 bit visto che vuoi dividere Fc per 256?
Sbagli i calcoli perché con prescaler ad 1 e clock di 16 MHz, con un timer con registro ad 8 bit hai una risoluzione di 0,000016 secondi, quindi 16 us, non ms.

Ricordati che i timer hanno 4 parametri fondamentali:
1) il clock sorgente, che corrisponde al clock di sistema (16 MHz per l'Arduino) - vero in parte perché il timer 2 può lavorare anche in modalità asincrona ma per ora lasciamo perdere
2) il prescaler, ossia il fattore di divisione del clock sorgente, che puoi metter su determinati valori preimpostati e che dipendono dal timer in uso
3) la dimensione del registro del timer, che può essere a 8 o 16 bit
4) la modalità che usi, che ti permette poi alcune manipolazioni.

Logged


Offline Offline
Jr. Member
**
Karma: 1
Posts: 99
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

si scusa volevo scrivere 16 microsecondi e non millisecondi...mi spiego meglio quello che voglio fare e inviare via wfi ,con  lo shield wifi ufficiale di arduino, un vettore di byte che in posizione i contenga quanto tempo in microsecondi ci ha messo ad inviare quello in posizione i-1, il problema che usando per inviare la funzione write ho una dinamica di 8 bit ( 256 livelli).
io ho calcolato che il tempo medio di trasmissione e 12 millisecondi pero il probela che un livello corrisponde a 16/256 microsecondi.
io vorrei fare un timer che conta il tempo di trasmissione, che venga resettato una volta che il singolo bit in posizione i viene trasmesso e che abbia una dinamica di circa 160 ms. e possibile?
grazie mille   
Logged

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

I timer una volta avviati non si fermano per eventi.
Devi leggere tu il valore del loro registro. Potresti fare così:
1) imposti il timer con il tempo che ti serve fra un overflow ed il successivo in modo da avere la risoluzione che vuoi ottenere;
2) prima dell'invio del dato, azzeri il contatore del timer
3) spedisci i dati
4) subito dopo leggi il contatore. Sapendo la risoluzione, hai subito il tempo impiegato.
Logged


Pages: [1]   Go Up
Jump to: