Tutorials - PIC18 by Data Sheet

 

PORTE


PORTE

PORTE è un registro a 4 bit per uso generico (GPIO - General Purpose IO).
Ad esso è solitamente associata la funzione di controllo per la Parallel Slave Port (PSP) ed una estensione degli ingressi del modulo A/D.
Un bit di questo registro è alternativo alla funzione MCLR.

In particolare PORTE supporta:

  • GPIO

  • segnai di controllo di PSP

  • Ingressi modulo AD

  • MCLR


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 PORTE è 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 PORTE posso assumere le seguenti funzioni :

  • General Purpose IO (RE2:0)
    Si tratta della funzione generica di ingresso/uscita (GPIO General Purpose IO), dove la direzione è stabilita dal registro TRISE
    PORT
    E è 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 PORTE 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:

  •   MCLRE = 1 , ovvero viene configurato il pin come ingresso per il reset esterno. Se usato con ICSP è l' ingresso di Vpp.

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:

; Inizializza 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:
  1. La funzione PSP è attivata settando il bit PSPMODE (TRISE<4>) e la direzione dei pin è indipendente dal PORTD
     

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

 

 

 

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