cambiare risoluzione del timer

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

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

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.

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

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.