Il Timer

La periferica timer e' costituita da un contatore a 8 bit, un prescaler programmabile a 7 bit, una linea di interruzione (fine del conteggio), e un pin d'ingresso-uscita denominato TIMER.
Il contatore a 8 bit e' denominato TCR e si trova alla locazione D3h. Il prescaler e' invece denominato PSC con locazione D2h, e infine il registro di controllo TSCR si trova alla locazione D4h.


Registro TCR (Registro contatore - indirizzo D3h, lettura-scrittura)

BIT 0-7 = Contatore del timer


Registro PSC (Registro prescaler - indirizzo D2h, lettura-scrittura)

BIT 0-6 = Conteggio del prescaler
BIT 7 = Non usato (sempre a livello 0)


Registro TSCR (Registro di controllo timer - indirizzo D4h)

BIT 0-2 = PS0-2 fattore di divisione del prescaler
BIT 3 = PSI inizializza prescaler
BIT 4 = DOUT controllo pin timer
BIT 5 = TOUT controllo pin timer
BIT 6 = ETI abilita interrupt timer
BIT 7 = TMZ termine del conteggio

I bit PS0-PS2 permettono di impostare il fattore di divisione del prescaler secondo la seguente tabella :

PS2 PS1 PS0 Fattore di divisione
0 0 0 1
0 0 1 2
0 1 0 4
0 1 1 8
1 0 0 16
1 0 1 32
1 1 0 64
1 1 1 128

Il bit PSI viene usato per inizializzare il prescaler e per inibire il conteggio. Portando questo bit a 0, al prescaler viene associato il valore 7Fh ed il conteggio del prescaler e del contatore TCR viene bloccato. Viceversa, portando il bit PSI a 1, il prescaler viene abilitato ed inizia il conteggio. Ad ogni impulso di clock, il PSC viene decrementato di 1. Quando il registro PSC raggiunge il valore 0, va a decrementare di 1 il contatore TCR.
Il bit TMZ viene posto a 1 dal micro, quando il contatore TCR ha raggiunto il valore zero. Questo bit deve essere posto a 0 prima di iniziare un nuovo conteggio.
Il bit ETI permette di abilitare o disabilitare l'interrupt della periferica timer. Se il bit ETI si trova a livello 1, e il bit TMZ va anch'esso a 1, il timer genera una interruzione.
Il bit TOUT stabilisce il funzionamento del pin TIMER. Quando questo bit e' a 0, il pin TIMER e' selezionato come ingresso, viceversa quando il bit TOUT e' a 1, il pin TIMER e' impostato come uscita.


Modi di funzionamento del timer

Attraverso i bit TOUT e DOUT e' possibile scegliere 3 modi di funzionamento del Timer e del pin timer :

  1. Ingresso con clock esterno: TOUT=0 e DOUT=0. In questo caso, il prescaler del timer viene decrementato dagli impulsi esterni applicati al pin TIMER. In questo modo si usa il timer come contatore di eventi esterni.
  2. Ingresso controllato (input gated): TOUT=0 e DOUT=1. In questo caso, il prescaler viene decrementato dal clock interno, ma solo quando sul pin TIMER e' presente un livello 1. In questo modo si puo' ad esempio misurare la lunghezza di un impulso.
  3. Uscita: TOUT=1. In questo caso, quando scade il tempo impostato all'interno del contatore del timer, lo stato del bit DOUT viene passato in uscita al pin TIMER.

Utilizzo del timer

Quando il timer viene utilizzato con il clock interno, la durata totale del conteggio, puo' essere calcolata con questa formula:

T(sec) = (12 x TSCR x TCR) : Xtal in Hz

dove T e' il tempo in secondi, TSCR e' il fattore di divisione del prescaler, TCR e' il valore caricato nel contatore TCR del timer e Xtal e' la frequenza in Hertz del quarzo collegato al micro.
La formula inversa per calcolare il valore di TCR e':

TCR = [(Xtal in Hz : 12) : TSCR] x T(sec)


Impostare il registro TSCR

Il timer viene molto spesso utilizzato per contare un certo tempo, o per temporizzare il funzionamento di una certa routine. A tale scopo il timer viene configurato nella modalita' "Uscita", ponendo TOUT a livello 1 e DOUT a livello 0 e con l'interrupt attivo. In questo caso, il valore da impostare nel registro TSCR e':

Fattore di divisione del prescaler (TSCR) Valore del registro TSCR (in decimale)
1 104
2 105
4 106
8 107
16 108
32 109
64 110
128 111

© Giuseppe Di Paolo '98
Aggiornato giovedì 6 agosto 1998