Il Timer0
I PIC18F hanno un Timer0 simile a quello dei 16F :
-
il TIMER0 viene letto e scritto con il registro TR0L
invece che con TMR0
-
l' OPTION_REG è stato rinominato T0CON
-
il bit PSA (T0CON<3>) abilita il prescaler se
azzerato e lo disabilita se posto a 1
-
è diverso il controllo del prescaler dove PS2:PS0,
OPTION<2:0> sono sostituiti da T0PS2:T0PS0, T0CON<2:0>, ma con
funzionamento identico
-
Il bit TOIF è settato quando TMR0 genera un interrupt
(TMR0L in overflow), in modo identico ai 16F
-
WDT e il suo postscaler non sono toccati da T0CON
Per inciso, RBPU , OPTION<7>, è stato spostato a
RBPU, INTCON2<7> e INTEDG, OPTION<6> è passato a INT0EDG,
INTCON2<6>.
Al di là di questo, TIMER0 può operare a 16 bit portando a 0
T08BIT, T0CON<6> . In questo modo
TMR0H e TMR0L sono i due bytes di accesso. TMR0H è aggiornato dal byte alto
di TMR0 quando TMR0L è letto. L' interrupt del Timer0 è attivato nel modo a
16 bit quando il conteggio passa da FFFFh a 0000h.
Azione
A riguardo di TIMER0 e OPTION_REG, le modifiche da
effettuare riguardano :
-
rinominare e muovere OPTION, NOT_RBPU a INTCON2, NOT_RBUP
-
rinominare e muovere OPTION_REG, INTEDG a INTCON2, INTEDG0
-
canmbiare OPTION_REG in T0CON.
-
rinominare PS2:PS0 in T0PS2:T0PS0
-
la lettura/scrittura di TMR0 va fatta su TMR0L e non su
TMR0
|
Il Timer1 e gli altri timer
Timer1 funziona come per la famiglia 16F, ma, se usato come
oscillatore con componenti esterni, dato il diverso processo produttivo, va
verificata la correttezza di questi componenti.
Il Timer2
Timer2 funziona come per la famiglia 16F e non sono richieste
variazioni nel codice.
Il Timer3
Timer3 è un quarto timer non presente nei mid range, quindi
non ci sono problemi di conversione di codice.
|