Con il termine PORT si definisce un pin o gruppo di pin del chip a cui sono
collegate delle funzioni di ingresso e uscita (Input/Output o I/O).
Per la nomenclatura PIC, l' acronimo GPIO (General Purpose
I/O) indica un pin che può assumere, sotto controllo del programma, diverse
funzioni di I/O.
La principale di queste funzioni è quella di Input e Output
digitali.
|
E' caratteristica comune dei microcontroller embedded quella di
avere più di una funzione assegnabile ad ogni pin.
Dall' immagine a lato si rileva che, esclusi i pin dedicati all'
alimentazione (Vdd/Vss), tutti gli altri supportano da due a quattro
diverse periferiche.
Questo, che a prima vista può apparire molto complicato, è
uno dei punti su cui trova maggiore difficoltà chi si avvicina le
prime volte a questi microntroller.
Ma non è così. Infatti basta
considerare le varie funzioni esclusivamente una alla volta,
senza soffermarsi su quelle che non interessano l' applicazione. |
In sostanza, questa abbondanza di funzioni corrisponde ad
una serie di POSSIBILITA', di potenzialità che sono disponibili e che
possono essere usate dove e quando servono. Altrimenti resta lì in attesa.
Con un esempio, è come avere disponibile un coltellino svizzero multiuso:
ben complicato, con molte e molte lame e funzioni, ma di tutte se ne
useranno in generale poche per volta.
Quindi non c'è assolutamente da preoccuparsi per questa
selva di funzioni, nè tanto meno per le centinaia di pagine dei fogli dati:
è ben possibile che si impieghi un PIC da anni senza aver mai avuto
occasione di utilizzare la PSP o l' USART in trasmissione sincrona o I2C in
modo slave.
Comunque, abbiamo detto che la funzione principale e più semplice è quella di
IO digitale o
GPIO (General Purpose
IO).
Poichè il micro lavora su dati dell' ampiezza di 8
bit,
logicamente ne consegue che anche i pin siano raggruppati in
blocchi di 8
Questa struttura viene identificata con lettere maiuscole,
formando:
-
PORTA
-
PORTB
-
PORTC
-
PORTD
-
PORTE
-
ecc.
a seconda della disponibilità di pin del processore ( i PIC
hanno packages che variano da
6 a 100 pin).
In generale, i package a 28 pin dispongono delle
prime 3; package a 40 pin hanno il PORTD e package con un numero maggiore di pin dispongono di più GPIO.
Il raggruppamento logico dei GPIO in moduli di 8 corrisponde
all' interno del chip ad una serie di blocchi che controllano
ciascuno 8 pin attraverso una serie di registri.
Qui sopra è riportato lo schema di principio del
PIC18F2321 e sono evidenziati i blocchi dei PORT.
Possiamo osservare che, per questo chip in contenitore a 28 pin, sono
disponibili i PORTA, B, C e un solo elemento del PORTE.
Nel PIC18F4321 troviamo anche il PORTD e un numero maggiore di bit
del PORTE.
A parte queste differenze, si constata (positivamente!) che
Microchip ha fatto il possibile per mantenere una compatibilità a
livello di pin e di funzioni tra i vari chip, non solo di una stessa
famiglia, ma anche di famiglie diverse.
Così, troviamo una completa compatibilità pin-to-pin tra
un PIC16 e un PIC18, a pari package.
sia a livello pin di alimentazione, sia di gruppi di porte e
anche a livello di funzioni, con la sola accortezza di tenere presente che i
PIC18 hanno, in generale, più periferiche integrate dei PIC16 e quindi le
funzioni programmabili sui pin sono maggiori.
Quindi, dal punto di vista circuitale, non esistono
particolari problemi nel sostituire un PIC con un altro, a parità di
package (sempre, comunque, con un occhio ai fogli dati.)
Per ogni PORT, a supporto della funzione di IO digitale, nei
PIC enhanced sono disponibili 3 registri:
TRISx
|
che determina la direzione
ingresso uscita di ogni pin
|
PORTx
|
che permette l' accesso ai pin in lettura/scrittura
|
LATx
|
che permette la lettura
e la scrittura del registro latch di uscita
|
Questa struttura triplice, rispetto a quella composta dai
soli PORTx e TRISx dei mid-range, garantisce l' eliminazione del Problema
R-M-W che affligge questi ultimi.
Una trattazione dettagliata del Problema R-M-W è disponibile qui.