Timer1

Il Timer1 e%u2019 un timer/contatore a 16 bit formato da due registri a 8 bit (TMR1H:TMR1L).
Il TMR1 si incrementa quindi da 0000h a FFFFh ed ogni volta che il TMR1 va in overflow, cioe%u2019 passa da FFFFh a 0000h, viene settato il flag TMR1IF (PIR1<0>) il quale puo%u2019 generare una richiesta di interrupt nel caso che l%u2019apposito flag (TMR1IE (PIE1<0>)) sia settato.
TMR1 puo%u2019 funzionare come un timer o come un contatore a seconda di come viene configurato il bit TMR1CS (T1CON<1>). Nel modo timer il TMR1 si incrementa di 1 ogni istruction cycle, nel modo counter il TMR1 si incrementa di 1 ogni fronte di salita di un clock esterno.
Il TMR1 puo%u2019 essere abilitato o disabilitato a seconda di come e%u2019 configurato il bit TMR1ON (T1CON<0>).
Esiste anche la possibilita%u2019 di resettare il TMR1 tramite uno dei due moduli CCP e lo vedremo in seguito.
Quando l%u2019oscillatore del TMR1 e%u2019 abilitato (T1OSCEN a 1 (T1CON<3>)) i pin RC1/T1OSI/CCP2 e RC0/T1OSO/T1CKI, diventano degli input per cui i bit 0 e 1 di TRISC vengono ignorati.

TMR1 in modo timer.
Se viene messo a 0 il bit TMR1CS (T1CON<1>) il TMR1 si comporta come un timer. In questo modo il clock del timer e%u2019 la frequenza di sistema diviso 4, cioe%u2019 il timer si incrementa ogni instruction cycle che e%u2019 appunto pari a 4 periodi di clock di sistema. In questo caso il valore del bit T1SYNC (T1CON <2>) non ha effetti in quanto il clock interno e%u2019 sempre sincronizzato.

TMR1 in modo counter.
A seconda di come e%u2019 configurato il bit TMR1CS (T1CON<1>) il TMR1 puo%u2019 contare in modo asincrono o sincrono. Quando il TMR1 viene incrementato da un clock esterno gli incrementi avvengono sui fronti di salita. Dopo che il TMR1 e%u2019 stato abilitato come contatore il modulo deve prima avere un fronte di discesa prima che il contatore inizi a incrmentarsi.


Stampa la pagina