Solitamente
PORTE è presente con 3 + 1 pin nei chip in package a 40
pin e con un solo pin (alternativo a MCLR) in quelli a 28 pin. In particolare
vediamo qui lo schema a blocchi di PIC18F4321, package 40 pin.
Fisicamente i pin si trovano qui:
Nei chip a 28 pin PORT
E
è presente solo come MCLR(RE3).
Nel package a 40 pin si aggiungono RE0, 1, 2.
La tabella seguente riporta il quadro completo delle possibilità di PORTE.
Pin |
Funzione |
TRIS |
I/O |
Tipo |
Descrizione |
RE0
!RD
AN5 |
RE0 |
0 |
O |
DIG |
LATE<0> uscita digitale |
1 |
I |
TTL |
PORTE<0> ingresso digitale |
!RD |
1 |
I |
TTL |
ingresso read enable del PSP |
AN5 |
1 |
I |
ANA |
ingresso A/D canale 5 |
RE1
!WR
AN6 |
RE1 |
0 |
O |
DIG |
LATE<1>
uscita digitale
|
1 |
I |
TTL |
PORTE<1>
ingresso digitale
|
!WR |
1 |
I |
TTL |
ingresso write
enable del PSP
|
AN6 |
1 |
I |
ANA
|
ingresso A/D
canale 6
|
RE2
!CS
AN7 |
RE2 |
0 |
O |
DIG |
LATE<2>
uscita digitale
|
1 |
I |
TTL |
PORTE<2>
ingresso digitale
|
!CS |
1 |
I |
TTL
|
ingresso chip
select del
PSP
|
AN7 |
1
|
I
|
ANA
|
ingresso A/D
canale 7
|
!MCLR
Vpp
RE3 |
!MCLR |
-
|
I
|
ST
|
master reset
esterno
|
Vpp |
-
|
I
|
ANA
|
high voltage
detection per ICSP
|
RE3 |
-
|
I
|
|
ingresso
digitale PORTE<3>
|
- = non dipende dal registro TRIS
DIG = uscita digitale
TTL = buffer di ingresso livello logico
ST = ingresso con trigger di schmitt
ANA = ingresso (uscita) analogico
Nella tabella sono indicati lo stato del bit di TRISE
necessario alla funzione e il genere di ingresso/uscita (la funzione
ICSP non dipende dal registro di direzione).
I pin di PORT
E
posso assumere le seguenti funzioni :
RISE.
PORTE
è il registro dello stato della porta (in lettura e
scrittura), mentre LATE è il registro del latch della porta in uscita.
bit di controllo di PSP
I pin possono essere dedicati (contemporaneamente) come ingressi di
controllo per la Parallel Slave Port
input analogici (
AN7:5)
AN7:5)
AN7:5)
Attraverso il registro ADCON1 i pin possono essere assegnati ad una funzione
di ingresso per il modulo AD (default al POR)
I registri associati a PORTE
I registri associati all' uso di PORT
E
sono i seguenti :
Nome |
bit 7 |
bit 6 |
bit 5 |
bit 4 |
bit 3 |
bit 2 |
bit 1 |
bit 0 |
PORTE |
|
|
|
|
RE3 |
RE2 |
RE1 |
RE0 |
LATE |
|
|
|
|
|
Data latch |
TRISE |
IBF |
OBF |
IBOV |
PSPMODE |
|
TRISE2 |
TRISE1 |
TRISE0 |
ADCON1 |
|
|
|
|
PCFG3 |
PCFG2 |
PCFG1 |
PCFG0 |
CONFIG3H |
MCLRE |
|
|
|
FOSC3 |
FOSC2 |
FOSC1 |
FOSC0 |
Si nota immediatamente che Il registro PORTE
ha solamente 3 bit attivi, essendo PORTE
composta da soli 3 bit.
Il bit relativo a RE3 è funzionante solamente se il pin MCLR è stato
configurato come ingresso digitale con il bit MCLRE
(CONFIG3H<7>)
.
Così pure LATE
ha solo 3 bit attivi. Il bit corrispondente a RE3 non ha funzione
in quanto RE3, se utilizzato, può essere solo un ingresso e non una
uscita
Il registro TRISE
è registro di direzione un poco particolare : solamente i primi 3
bit regolano la direzione degli I/O, mentre i 4 bit più alti hanno funzione
di abilitazione e controllo sul PSP.
TRISE
|
bit
|
IBF
|
OBF
|
IBOV
|
PSPMODE
|
-
|
TRISE2
|
TRISE1
|
TRISE0
|
funzione
|
R
|
R
|
R/W
|
R/W
|
R
|
R/W
|
R/W
|
R/W
|
default
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
-
bit 7 IBF
: Input Buffer Full status bit
1
= è stata ricevuta una parola che è in attesa di lettura
0
= nessuna parola ricevuta
-
bit 6 OBF
: Output Buffer Full status bit
1 =
il buffer in uscita è in attesa di lettura
0 =
il buffer in uscita è stato letto
bit 5 IBOV
: Input Buffer OVerflow
1
= non è stato letto un dato che è stato sovrascritto da un nuovo
dato
0 =
nessun overflow
bit 4 PSPMODE :
controllo della porta PSP
1
= PSP abilitato - PORTD dedicato
0
= PSP disabilitato - PORTD disponibile come GPIO
bit 3 - :
non utilizzato
letto come 0
bit 2:0
TRISE2:1
: direzione I/O digitale
1
= input
0
= output
I valori di default al POR sono indicati nella tabella.
In
particolare.IBF
e
OBF
sono dei flag di status a sola lettura per monitorare le condizioni della PSP;
anche IBOV
è un flag, ma va azzerato da programma.
Situazione al POR
Al POR:
-
TRISE
= 0000x111, ovvero la direzione generale dei pin è come ingresso. e i flag
sono azzerati
PORTE
e LATE
hanno contenuto indeterminato.
-
In
ADCON1 il valore dei bit PCFG<2:0>
è 1, quindi AN7:5 sono programmati come input analogici
Per quanto
riguarda i registri di controllo dell' interrupt, al POR tutti gli Interrupt sono disabilitati
Nei registri di configurazione,
per default:
Per quanto riguarda le funzioni speciali (PSP, AD, ICSP , ICD e
LVP) consultare i capitoli relativi.
Si può riassumere la situazione del POR
in questo modo :
-
I pin RA2:0 sono configurati come ingressi analogici. La funzione può essere modificata
con
ADCON1.
-
La funzione PSP è disabilitata
-
La funzione RE3 è disabilitata
-
Nessun interrupt dipende direttamente da PORTA
Inizializzazione di PORTE
Come solito, i pin dedicati ad una funzione non possono essere impiegati
per altr
Anche per PORTD il default del POR fa assumere ai registri particolari
valori pre definiti, in particolare come ingressi analogici, e questo rende indispensabile, nelle prime fasi di inizializzazione
dell' hardware, dedicare una parte alla corretta definizione delle funzioni di
questi pin.
Il default per PORTD
è con tutti i bit configurati come ingressi digitali.
Una sequenza di inizializzazione come GPIO digitale può essere questa:
; Ini zializza PORTE
clrf PORTE
; clear PORTE latch
movlw b'10100000'
movwf ADCON1
; set RE come digital
movlw b'0000011'
;
set RE1:0 come input
movwf TRISE
; e RE2 come out
|
NOTE:
-
La funzione PSP è attivata settando il bit PSPMODE
(TRISE<4>) e
la direzione dei pin è indipendente dal PORTD
-
Le funzioni enhanced PWM sono disponibili solo su alcuni chip
Per quanto riguarda CCP, PWM e PSP consultare i capitoli relativi.
|
Il pin MCLR
Anche il pin MCLR (il reset esterno) fa in qualche modo parte di
PORTE in quanto, se non necessario, può essere configurato in
alternativa come ingresso per uso digitale ed in tal caso assume il valore
di RE3.
Nei chip oltre i 28 pin è
l' unico bit di PORTE disponibile.
La funzione RE3
che sostituisce MCLR è una scelta strutturale e dipende da un bit del registro di CONFIG .
I PORTE hanno una struttura simile ai PORTA, salvo il pin MCLR,
che deve funzionare anche da ingresso della tensione di programmazione HV. In
effetti il del Master Clear può assumere varie funzioni:
-
Master Clear - reset esterno
-
GPIO - solitamente un port RE - solo input
-
Ingresso dalla Vpp durante la programmazione HV
|
La struttura della logica che sta dietro il pin è schematizzata a
lato.
E' stata evidenziato in verde il percorso del segnale del reset
esterno:
- Il segnale, dal pin arriva ad un gate di rilevamento (Low-Level
Detect) a cui fa seguito un filtro per attenuare eventuali disturbi;
- dopo il filtro, un gate OR è abilitato dal segnale di
configurazione MCLRE (invertito) e trasferisce il livello di reset
alla logica successiva. Lo stesso segnale blocca il gate Schmitt
Trigger che da l' accesso al registro di ingresso in lettura.
|
|
Durante la programmazione HV (con tensione superiore a quella di
alimentazione), questa tensione viene applicata al pin MCLR.
Un gate di rilevamento dell' alta tensione permette a questo livello
di passare alla logica di scrittura della memoria programma e della
EEPROM.
Durante la fase di programmazione, le altre funzioni sono bloccate. Da
notare che la tensione di programmazione HV (solitamente 12.5-13V) viene
applicata a tutto il circuito collegato al pin, che, evidentemente, è
in grado di sopportare questo. |
|
Se la configurazione esclude la funzione di MCLR, portando a 1 il
segnale MCLRE, il pin può essere impiegato come un GPIO, ma solo come
ingresso. In arancio è evidenziata la circuiteria interessata.
- Il segnale MCLRE a livello 0 abilita il gate Schmitt Trigger di
accesso al latch di lettura e blocca invece il gate di MCLRE.
- All' ingresso, il trigger di Schmitt che ripulisce il
segnale e lo invia ad un latch.
- Il latch viene letto abilitando il segnale RD PORTE, di cui il pin
diventa parte.
|
Da notare che, nella logica interna di questo pin, non è presente il segnale WR dato che
può essere usato solo come ingresso.
Inoltre i gate relativi a RD LAT e TRIS sono sempre connessi alla Vss
(leggendoli si ottiene 0), dato che non esiste un latch di uscita (e quindi
<LATE:3> non ha senso), nè esiste un registro di direzione (dato che il
pin è solo ingresso e quindi non ha senso un <TRISE:3>).
Sono comunque presenti dei gate relativi a questi segnali in quanto il pin fa parte
logica del PORTE, che,
nei package a 40 o più, ha altri pin e, di conseguenza, il LATE e
il TRISE, dato che questi pin addizionali sono bidirezionali.
MEMENTO:
Nella definizione delle funzioni dei pin, va ricordato che RE3,
usato in alternativa a MCLR, può operare solamente come come
ingresso digitale.
|