Timer 2
Il Timer2 (TMR2), a 8 bit, comune a svariati PIC, è
legato alle funzioni speciali di comparatore e di clock per il modulo MSSP.
Le sue caratteristiche principali sono :
- timer o contatore di periodo a 8 bit
- pre scaler e post scaler programmabili dedicati
- un unico registro di controllo
- interrupt generabile a seguito di una comparazione
- uso opzionale come sorgente del clock per lo shift del modulo MSSP
Inoltre , come per tutte le sorgenti di interrupt della serie PIC18, anche
Timer1 può essere impostato per generare richieste di interrupt a due livelli
di priorità.
Il registro T2CON è la via per controllare le funzioni del
Timer2, compreso il pre e post scaler :
T2CON |
bit |
- |
T2OUTPS3:2:1:0 |
TMR2ON |
T2CKPS1:0 |
funzione |
U |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
default |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
- bit 7 - : non
utlizzato . In lettura è 0
- bit 6:3 T2OUTPS3:0 :
Timer 2 postscaler
0000 = 1 : 1
0001 = 1 : 2
...
1111 = 1 : 16
bit 2 TMR2ON
: abilitazione del Timer2
1 =
abilitato
0 =
disabilitato
bit 1:0 T2CKPS1:0 : Timer
2 prescaler
00 = 1 :1
01 = 1 : 4
1x = 1 : 16
I valori di default al POR sono indicati nella tabella.
Il diagramma seguente schematizza il funzionamento di Timer2:
Nel funzionamento normale Timer2 è incrementato seguendo il clock
interno (Fosc/4). Un prescaler permette di dividere questa frequenza pe 4 o
per 16. Il valore accumulato nel registro TMR2 a 8 bit è comparato ad ogni
ciclo del clock con il un registro PR2 : quando i due valori coincidono
viene generata una uscita che può essere valida per il modulo PWM o
per l' MSSP. Questo segnale azzera anche il contenuto di TMR2 e
, passando attraverso un post scaler, genera una richiesta di interrupt.
Sia TMR2 che PR2 sono direttamente leggibili e scrivibili.
TMR2 viene azzerato ad ogni evento di Reset, mentre PR2 è
inizializzato a FFh.
Il contenuto di conteggio sia del prescaler che del postscaler sono
azzerati quando :
- viene scritto TMR2
- viene scritto T2CON
- viene effettuato un Reset (POR, MCLR, WDT, BOR)
Il contenuto di TMR2 non viene cambiato scrivendo T2CON.
Interrupt
L' interrupt di Timer2 è rilevato dal flag TMR2IF (PIR1<1>) e
mascherato dal bit TMR2IE (PIE1<1>).
La richiesta di interrupt è generata quando il contenuto del registro di
conteggio TMR2 eguaglia il valore scritto in PR2 ed è filtrata dal post
scaler, programmabile da 1 a 16, ovvero è possibile avere la chiamata di
interrupt ad un numero variabile di comparazioni avvenute.
La gestione interrupt del Timer1 richiede :
- l' abilitazione del bit TMR2IE
(PIE1<1>), che va
posto a 1 se si desidera attivare l' interrupt
- Il bit di selezione della
priorità dell' interrupt è TMR2IP
(IPIR1 <1>).
E' a 1 se si desidera l' alta priorità, altrimenti va a posto a 0. L'
abilitazione del modo interrupt con priorità richiede di aver settato il
bit IPEN (RCON<7>) ; altrimenti viene impiegato un sistema di
interrupt senza livelli di priorità e l' impostazione di TMR2IP
è indifferente.
- Il flag di identificazione è TMR2IF
(PIR1<1>) che va a 1 a seguito all' overflow del counter e va
cancellato da software.
L' interrupt di Timer2 fa riferimento al registro PIR1 e
quindi è considerata una interruzione periferica e quindi sono
dipendenti per l' abilitazione sia di GIE che di PEIE.
L' uscita di Timer2
Prima del post scaler è disponibile una uscita che segue il risultato
della comparazione e viene impiegata nei moduli CCP che fanno da time base
dell' uscita PWM.
Timer2 può anche essere usato come clock per le operazioni di shift
delle comunicazioni SPI, dipendenti dal modulo MSSP.
|