Tutorials - PIC18 by Data Sheet

 

Pag 62

 


Sospendiamo momentaneamente l' analisi dei modi di indirizzamento per ritornare al foglio dati, che a pag.62 fornisce una descrizione dei registri SFR.

 


Gli SFR

 

Gli Special Function Registers o SFR sono quelle locazioni in memoria dati che contengono quanto necessario per la gestione delle periferiche integrate, per lo stack, le tabelle, gli interrupt, ecc.

Se nei PIC16 gli SFR erano spalmati su più banchi, costringendo il programmatore ad inseguirli con gli switch RP, negli enhanced si trovano tutti nella parte più alta della memoria, nel banco 15.

Questo è già un vantaggio, in quanto non è più necessario uno switch di banco per passare da un SFR all' altro.
Inoltre la metà del banco 15 che li contiene è accessibile, come abbiamo visto prima, in modo semplificato con l' Access RAM, ovvero gli SFR sono raggiungibili senza operazioni particolari da qualunque banco di memoria si stia lavorando.

Gli SFR si possono suddividere in due gruppi:

  • quelli associati al "core" del processore (ALU, RESET, Interrupt)

  • quelli associati alle periferiche integrate (port, AD, Timers, ecc.)

La pagina 62 del foglio dati riporta una tabella in cui sono elencati tutti gli SFR con il loro indirizzo assoluto e che è inutile riportare qui.

Piuttosto è utile evidenziare alcuni punti:

  1. Alcuni SFR non sono registri realmente presenti in memoria, ad esempio quelli dell' indirizzamento indiretto (INDF) 
     

  2. Non tutte le locazioni di memoria del banco 15 sono occupate da SFR; questo dipende dalle caratteristiche dei chip e va verificato sul relativo foglio dati
     

  3. Così pure non tutti i registri sono a 8 bit completi. In ogni caso, i registri non impegnati o i bit non utilizzati rendono, come solito, 0 in lettura e se scritti il dato va perso. 

Le tavole 5.2  a pagina 63, 64, 65 dettagliano ogni singolo registro con:

  • Nome File

  • Bit e relativo nome del flag

e, in più, una utile raccolta dello stato che assumono questi bit al momento del Power On Reset (POR) o del BOR (Brown Out Reset).
Si potrà osservare che:

  • alcuni bit vengono posti a 1, altri a zero. 

  • altri non vengono modificati dalla loro situazione precedente, ovvero se il chip è attivo e questi registri sono stati inizializzati, POR o BOR non ne modificano il valore.

  • Per altri ancora, il valore assunto dopo questi eventi è casuale, non definibile a priori.

Un' ultima colonna riporta un utile indice delle pagine in cui i registri sono descritti.

Per meglio esemplificare prendiamo un tratto della tabella a pagina 65.


Vediamone alcuni :

IPIR1
: E' composto da 8 bit, tutti attivi e i cui nomi sono elencati. Al POR/BOR tutti i bit sono portati a 1
PIR1 : E' pure composto da 8 bit che al POR/BOR sono portati a 0 (disabilitando i relativi interrupt periferici)
OSCTUNE : il bit 6 non è implementato e tutti i bit sono a 0 al POR/BOR
LATE: soltanto i primi tre bit sono utilizzati e il loro valore al POR/BOR è indeterminato.
LATD: tutti i bit sono validi e anche in questo caso il loro valore al POR/BOR è indeterminato

E così via.


NOTE:
  1. I nomi dei registri e dei loro bit sono quelli che si ritrovano come label nel files .INI relativi a ciascun processore.
  2. Salvo poche eccezioni, i nomi sono gli stessi per tutti i chip.
  3. Quindi, maggior ragione ancora per evitare tassativamente l' uso di indirizzi assoluti, sempre sostituiti dalle corrispondenti label.
  4. Ovviamente non tutti i chip, non avendo lo stesso set di periferiche, non hanno gli stessi SFR e/o gli stessi bit, anche all' interno della stessa famiglia. Ad esempio, nel caso visto prima, il LATE, che dipende dal PORTE, è disponibile solo sui PIC a 40 e più pin, ma non sui 28 pin.

Come al solito, la lettura del foglio dati serve a chiarire anche quali SFR sono disponibili per quel determinato componente.

 

Vedremo più avanti nel dettaglio i vari SFR.


 

 

 

Copyright © afg. Tutti i diritti riservati.
Aggiornato il 03/12/10.