PIC - Periferiche e Moduli
 
  Box
Moduli Timer - Introduzione

Vedere anche:

Tra le periferiche dei microcontrollori PIC, sono disponibili dei moduli, chiamati Timer, i quali possono funzionare come timer o come contatori.
A seconda del modello di PIC, possiamo trovare 1 o più moduli Timer, sia ad 8 che a 16 bit, contraddistinti da una cifra finale (TMR0, TMR1, ecc.). Ognuno di questi Timer ha caratteristiche uniche, ma anche alcune caratteristiche che sono comuni.

Distinzione tra timer e contatore

In realtà, sia un timer che un contatore, contano gli eventi. La distinzione proviene da come questo risultato viene utilizzato. Per esempio, possiamo contare il numero di volte che un pulsante viene premuto collegandolo all'ingresso di un modulo timer/contatore.

In questo esempio, l'ingresso del modulo timer/contatore è collegato a VDD (livello logico alto) e, quando il pulsante viene premuto, porta l'ingresso a massa (livello logico basso).
Il modulo viene incrementato ogni volta che c'è un cambiamento di livello logico da alto a basso e memorizza il risultato.

Qui il modulo è stato utilizzato come un contatore, cioè conta quante volte è cambiato il livello logico da alto a basso, provocato dal pulsante (in questo caso, 2 volte).

Per un funzionamento corretto, sarà richiesto un antirimbalzo software o hardware.

In questo esempio, se abbiamo un segnale periodico, come una sorgente di clock od oscillatore, sull'ingresso del modulo ed iniziamo a farlo incrementare, quando il pulsante è premuto, e poi lo fermiamo, quando il pulsante viene rilasciato, potremmo usare il valore memorizzato per calcolare il tempo che intercorre tra gli eventi pressione/rilascio del pulsante.

Se il periodo di clock (1/frequenza) viene moltiplicato per il valore memorizzato, sapremo esattamente per quanto tempo il pulsante è stato premuto.
Nel nostro caso, se il periodo di clock è di 1mS, il pulsante è stato premuto per 4050 mS, corrispondenti a 4,05 secondi.

Anche in questo esempio, il contatore sta ancora contando, ma questa volta si tratta di un segnale di clock periodico, che verrà utilizzato come riferimento e il contatore viene quindi utilizzato come timer, perchè conta il numero di periodi di tempo intercorsi tra i 2 eventi di pressione/rilascio del pulsante.

Caratteristiche di un modulo timer

In primo luogo, è richiesta una sorgente del segnale.
Questa potrebbe essere un clock sincrono fornito da un oscillatore o un evento, non propriamente periodico, come, ad esempio, un pulsante collegato al pin Timerx ClocK Input (TxCKI).

   

Poi, il valore del conteggio dovrà essere memorizzato da qualche parte.
Nei microcontroller PIC, questo sarà un registro che si trova in memoria dati, ad 8 o 16 bit, a seconda di quale tipo di timer/contatore viene utilizzato. Il valore, in questo registro, si incrementa a seconda di quale fronte (di salita o di discesa) è stato selezionato, durante una transizione del segnale.
Per esempio, se il modulo è configurato per incrementare sul fronte di discesa di un segnale, il valore del registro aumenterebbe di uno ogni volta che si incontra una transizione del segnale da alto a basso.

   

Infine, il modulo timer/contatore, avrà almeno un divisore di frequenza (scaler) che potremo trovare prima (prescaler) o dopo (postscaler) del registro timer/contatore.
Uno scaler lavora dividendo, di un valore specifico, il segnale in ingresso.
Per esempio, se abbiamo in ingresso un segnale periodico con una frequenza di 1000 Hz e passiamo attraverso un prescaler impostato a 4:1, il valore nel registro timer/contatore sarebbe incrementato di 1 ogni 4 transizioni del segnale logico, quindi, ad una frequenza di 250 Hz.

Tutte queste caratteristiche, specifiche per ogni tipo di modulo timer/contatore, possono essere impostate tramite un registro dedicato, simile vagamente a quello della figura sotto.
Tramite l'impostazione dei bit specifici si potranno gestire i divisori, la sorgente del segnale e far partire od arrestare il timer.

   

Consultare il datasheet, del PIC che dovrete usare, per maggiori informazioni.

 

 

Il Timer0

Bibliografia:
 

 

Ultima modifica  

 
Privacy Policy Cookie Policy