PIC - Periferiche e Moduli
 
  Box
Il modulo Timer2

Vedere anche:

Le informazioni contenute in questi appunti si riferiscono principalmente al PIC16F877A (vedi datasheet), ma possono essere applicate a molti altri modelli con periferiche uguali o quasi.
In ogni caso, una lettura del datasheet appropriato, è obbligatoria.

Come funziona il timer2

Dopo il Timer0 ad 8 bit ed il Timer1 a 16 bit, ne troviamo un terzo ad 8 bit, il cui schema a blocchi è visibile in figura.

Le caratteristiche principali sono: 8 bit, prescaler selezionabile tra 1:1, 1:4 e 1:16, postscaler selezionabile tra 1:1 e 1:16 in passi da uno.
A differenza degli altri due timer, questo però può essere incrementato solamente dal clock principale del microcontroller, ovviamente tramite il prescaler appena citato.

   

Al registro di conteggio vero e proprio TMR2 è associato il registro PR2, detto "di periodo".
Durante il normale funzionamento, questi due registri vengono continuamente confrontati e si ottiene un interrupt quando i valori di questi due registri sono uguali.
Tale interrupt è comunque soggetto al postscaler: questo significa quindi che l'interrupt potrebbe anche essere volutamente ritardato rispetto al momento del confronto stesso. Per attivare il Timer2, che altrimenti resterebbe in riposo, si devono settare correttamente i bit del registro T2CON (Timer2 CONTROL register) visibili in figura.

   
T2CKPS1:T2CKPS0 (TMR2 Prescaler)
 T2CKPS1  T2CKPS0    Prescaler
    0        0          1:1
    0        1          1:4
    1        0          1:16
    1        1          1:16

I primi due bit T2CKPS1:T2CKPS0 consentono l'impostazione del prescaler.

TMR2ON (Timer2 ON)
  1 = Abilita Timer2
  0 = Disabilita Timer2

Il bit TMR2ON abilita o arresta il Timer2.

1

Abilita il conteggio del TMR2.

0

Disabilita il conteggio del TMR2.

T2OUTPS(3:0) (TMR2 Postscaler)
 PS3 PS2 PS1 PS0    Postscaler
  0   0   0   0  =     1:1
  0   0   0   1  =     1:2
  0   0   1   0  =     1:3
  0   0   1   1  =     1:4
  0   1   0   0  =     1:5
  0   1   0   1  =     1:6
  0   1   1   0  =     1:7
  0   1   1   1  =     1:8
  1   0   0   0  =     1:9
  1   0   0   1  =     1:10
  1   0   1   0  =     1:11
  1   0   1   1  =     1:12
  1   1   0   0  =     1:13
  1   1   0   1  =     1:14
  1   1   1   0  =     1:15
  1   1   1   1  =     1:16

Con i bit T2OUTPS si imposta il valore di divisione del postscaler, che, come visto, passa da 1:1 a 1:16 in passi da 1.
Ciò è molto importante perché significa che possiamo dividere anche per un numero primo come 7 oppure 11 o 13.

Visto così, il Timer2 potrebbe far pensare ad un comune timer aggiunto al chip in ausilio dei primi due, ma vedremo poi che servirà anche più frequentemente di quanto ci si aspetti.

   

Esempi di codice con uso del Timer2:

  • MPASM
  • MikroBasic

 

Il Timer1

 

Bibliografia:
Datasheet Microchip PIC16F877A

 

Ultima modifica  

 
Privacy Policy Cookie Policy