Tutorials - PIC18

 

Passare da PIC16 a PIC18

 


 

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 :

  1. rinominare e muovere OPTION, NOT_RBPU a INTCON2, NOT_RBUP

  2. rinominare e muovere OPTION_REG, INTEDG a INTCON2, INTEDG0

  3. canmbiare OPTION_REG in T0CON.

  4. rinominare PS2:PS0 in T0PS2:T0PS0

  5. 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.


 

 

 

Copyright © afg. Tutti i diritti riservati.
Aggiornato il 05/06/19.