Tutorials - PIC18

 

Passare da PIC16 a PIC18

 


RESET

I PIC 18F, pur avendo una gamma di sorgenti maggiore, rispondono agli stessi reset dei mid-range.

Per il controllo delle sorgenti, il registro PCON è rinominato come RCON e i bit TO e PD passano dallo STATUS a questo registro.

 

POR - Power On Reset

La funzione del bit POR è inalterata; passa solamente da PCON a RCON

BOR - Brown Out Reset

Pure il bit BOR passa da PCON a RCON.
Però la gestione del BOR è più sofisticata nei PIC18.

  • Quando BOR è abilitato, il Power Up Timer (PWRT) è abilitato automaticamente e lo stato del bit PWRTEN, CONFIG2L<0> è ignorato
     
  • Il configuratore iniziale offre la possibilità di selezionare almeno 4 livelli di tensione di BOR con i bit BORV1:0, CONFIG2L<3:2> che vanno adeguati alla tensione di alimentazione scelta
     
  • Il tempo per cui la Vdd rimane al di sotto di VBOR (parametro D005) è aumentato rispetto ai mid-range (parametro 35, TBOR)

Quindi il passaggio da PIC16 a PIC18 richiede:

  1. Cambiare la label PCON con RCON
     
  2. Cambiare STATUS, NOT_TO con RCON, NOT_TO
     
  3. Cambiare STATUS, NOT_PD con RCON, NOT_PD
     
  4. Nel CONFIG iniziale, selezionare il livello di BOR (se usato) in relazione alla tensione di alimentazione

 

MCLR - Master Clear

Nessun bisogno di modifiche tra il circuito di reset dei mid-range e dei 18F, tenen do presente la possibilità di utilizzare il pin del MCLR come ingresso GPIO, attraverso la configurazione iniziale.

 

WDT - WatchDog Timer

Nei PIC18, WDT non condivide più il postscaler con Timer0, ma dispone di uno proprio, indipendente da quello del Timer.
Come per i PIC16, WDT è abilitato nel config iniziale alttraverso il bit WDTE, CONFIG2H<0>, mentre il postscaler è configurato con i bit WDTPS2:0, CONFIG2H <3:1>, in un range da 1:1 a 1:128 nei PIC18Fxx2 e con WDTPS3:0 per i PIC18Fxxxx, fino a 1:32768.
Questo consente operazioni con tempi di WDT molto lunghi.

Se WDT è disabilitato nel CONFIG, è possibile comunque abilitarlo da programma usando il bit SWDTE, WDTCON<0>.
Se WDT è abilitato attraverso WDTE, ogni azione su SWDTE non ha effetto.

 

Stack Underflow-Overflow

Per quanto riguarda la priorità dell' interrupt, il controllo avviene con il bit IPEN, RCON<7> (Interrupt Priority Enable) che al POR è a 0 e quindi, se non alterato, origina la compatibilità ad un solo livello.

Se si intende sfruttare il doppio livello, occorre documentarsi sufficientemente sulle manovre necessarie, dato che vengono apportati sostanziali cambiamenti alla gestione. In breve:

  • Quando IPEN = 1 le funzioni di GIE, INTCON<7> e PEIE, INTCON<6> vengono modificate.
    Con interrupt ad un solo livello, GIE è l' abilitazione generale dell' interrupt, mentre PEIE solo quella degli interrupt periferici.
    Nella doppia priorità GIE diventa GIEH e abilita tutti gli interrupt, mentre PEIE diventa GIEL ed abilita gli interrupt a basso livello. Si viene così a formare una differenza non tra interrupt globale e interrupt periferici, ma tra interrupt globale e interrupt a basso livello di priorità, che richiede una piccola revisone della filosofia di approcio.
     
  • Ogni sorgente di interrupt ha associato un bit che permette di gestirla a bassa o alta priorità.
    Se il bit di controllo della priorità è a 1, all' interrupt viene assegnato il livello superiore e viceversa. 
    La gestione a doppia priorità genera un secondo vettore di interrupt a 0018h di cui bisognerà tenere conto.
    Se una sorgente di interrupt ha il flag nel bit x di PIR1 o PIR2, il corrispondente bit x di IPIR1 o IPIR2 sarà l' indicatore del livello di priorità e il corrispondente bit x dei registri PIE1 p o PIE2 sarà l' abilitazione.

     
  • Le priorità non contenute in questi registri si ritrovano in INTCON2 e INTCON3.
    Timer0 e RBIF hanno il settaggio in TMR0IP, INTCON2<2> e RBIP, INTCON<2>. Così pure i controlli di INT1 e INT2, che si trovano in INTCON3

 

Istruzione RESET

I PIC 18 dispongono di una istruzione RESET che costringe il processore in una situazione simile a quella prodotta da un livello basso al pin MCLR: tutte le periferiche sono resettate e il PC viene riportato al vettore di Reset..

Il registro RCON contiene ora un bit RI che è settato da BOR, POR e WDT e portato a zero dall' istruzione RESET.
Testando questo bit si può determinare l' avvenuto reset a causa dell' istruzione.

 


Azione

Se si prevedono concorrenti diverse cause di reset, è opportuno implementare l' analisi della sorgente e le relative misure correttive.

 

 

 

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