TIMER 1
Il modulo TIMER 1 è un timer/contatore a 16 bit, come si vede nella figura sottostante, e quindi formato dall'unione di due singoli registri ad 8 bit: il TMR1H ed il TMR1L. Entrambi i registri sono leggibili e scrivibili in qualsiasi momento.
L'interrupt
verrà generato al raggiungimento del valore 0x0000
incrementando di 1 il valore 0xFFFF, sempre che il bit TMR1IE sia
stato abilitato.
Il funzionamento dei bit TMR1IE e TMR1IF è
identico a quello visto per i corrispondenti T0IE e T0IF del TIMER 0.
A differenza del TIMER 0, il TIMER 1 ha un registro di controllo tutto suo, visibile nella figura sottostante.
TMR1ON abilita
(1)o arresta (0) il Timer1;
TMR1CS seleziona l'incremento sul pin esterno T1CKI (1) oppure sincronizzato col clock del controller (0) (esattamente come nel caso del TIMER 0);
T1SYNC dice se sincronizzare il segnale esterno con il clock del controller oppure no (diversamente dal TIMER 0 che non lo prevedeva):
Se il bit TMR1CS = 1, il segnale in ingresso sul pin T1CKI non verrà sincronizzato col clock interno;
Se il bit TMR1CS = 1, il segnale in ingresso sul pin T1CKI verrà sincronizzato col clock interno.
T1OSCEN abilita l'oscillatore del TIMER1 :
T1OSCEN = 1 attiva l'oscillatore del TIMER 1;
T1OSCEN = 0 spegne l'oscillatore del TIMER 1.
Uno dei vantaggi del TIMER 1 è quello di poter lavorare anche separatamente dal clock del microcontroller stesso: ad esempio è possibile avere un quarzo a 8 MHz per il normale funzionamento del circuito ed uno a 32768 Hz per il mantenimento di un orologio, che andrà collegato ai pin T1OSI e T1OSO.
I pin T1OSI e T1OSO sono, rispettivamente, l'ingresso e l'uscita dell'oscillatore interno del Timer1, a bassa potenza e può funzionare fino a 200kHz. Dal datasheet si preleva il valore dei condensatori C1, C2 (vedi tabella sottostante) :
Capacità
superiori aumentano la stabilità dell'oscillatore, ma
aumentano anche il tempo di avviamento. Infatti come per
l'oscillatore principale, alla partenza il clock non è
affidabile.
L'oscillatore può essere acceso o spento impostando il bit T1OSCEN del registro T1CON. Quando è abilitato (acceso), i due I/O RC0 e RC1 saranno disabilitati e viceversa.
Il PIC resta in sleep fino all'interrupt provocato dal TIMER 1 che lavora con una frequenza più bassa e che quindi consuma molte volte di meno rispetto all'oscillatore a 8 MHz, favorendo la durata delle batterie.