__________ lezioni sui MICROCONTROLLORI : PORTE I/O _________ prof.Romei Michele __________

PORTA



Nel PIC 16F877A è dotata di 6 pin (RA5:RA0) che possono essere configurate come I/O digitali o ingressi analogici per l'ADC e i comparatori analogici C1 e C2. Questo compito, svolto dal registro ADCON1 <3:0>, richiede il settaggio del nibble basso di questo registro (è importante ricordare che all'accensione il PORTA è configurato per funzionare con tutti i pin analogici).


E' importante sapere che i pin di questa porta che possono funzionare sia in digitale che in analogico sono quelle che hanno entrambe le etichette Ran/ANn (n = numero pin della porta).

Questa porta (evidenziata in verde nella figura) viene gestita anche da altri registri :

TRISA : consente di decidere se un pin viene usato come ingresso o come uscita, i bit con “1” sono ingressi mentre i bit con “0” sono uscite;

PORTA : consente di leggere, in funzionamento digitale, i pin che lavorano come ingressi e scrivere i pin, in funzionamento digitale, che lavorano come uscite.

CMCON e CVRCON : configurano i pin d'ingresso analogici e le uscite digitali dei comparatori C1, C2 ed l'uscita analogica voltage reference.










La linea RA4 (non utilizzata come ingresso analogico) può essere usata come clock esterno del timer0 (vedremo che cos'è) o come uscita del comparatore C1. Come ingresso digitale è un input trigger di Schmitt, come uscita digitale è un open drain.

Tutti gli altri pin configurati come ingressi digitali accettano livelli TTL, mentre come uscite digitali sono di tipo CMOS.



TRIGGER DI SCHMITT

In corrispondenza della soglia, non si ha più una netta commutazione dell’uscita, ma una serie di commutazioni dovute a ripetuti attraversamenti della soglia. La figura seguente mostra ciò che in tal caso avviene.






Questo problema può essere risolto usando particolari comparatori, detti comparatori con isteresi, o discriminatori con isteresi , od anche Trigger di Schmitt.

La soglia superiore, che possiamo indicare con UTP (Upper Threshold Point) , determina la commutazione dell’uscita quando la tensione di ingresso, crescente, la supera. Quella inferiore, indicata con LTP ( Lower Threshold Point) produce la commutazione quando la tensione di ingresso, decrescente, la oltrepassa. La figura sotto mostra il simbolo grafico del T. di S. e la situazione appena descritta, con soglie inferiore e superiore , rispettivamente, pari a -4V e 4V. La tensione d’isteresi vale H = 4V – (- 4V) = 8V.


La scelta di usare una tensione negativa esalta l'esempio, ovviamente nelle porte logiche le soglie sono entrambe positive e tenute a una certa distanza.

Vediamo un esempio di lettura dello schema dei pin RA0, RA1, RA2, RA3. Prima con configurazione input e poi output :







PORTB

Ha 8 linee digitali bidirezionali, la direzione è gestita con TRISB, mentre la scrittura e la lettura mediante PORTB. Oltre a funzionare come I/O digitali si possono configurare :

E' importante ricordarsi che i flag che segnalano quale pin ha causato l'interruzione vanno resettati prima di uscire dalla subroutine dell'interrupt.



PORTC

Attraverso il registro TRISC si decide quali pin sono ingressi e quali sono uscite (alcuni pin di questa porta sono usati da delle periferiche di di comunicazione, anche per questi pin il registro gestisce gli ingressi e le uscite). Mediante il registro PORTC si possono scrivere i pin output e leggere i pin input. I pin configurati come ingresso sono dei trigger di Schmitt.

PORTD

Questa porta utilizza 8 pin bidirezionali, usa TRISD per definire la direzione e PORTD per leggere e scrivere. Questi pin, quando usati come ingressi, sono dei trigger di Schmitt. Il byte che rappresenta questa porta può essere usato come input/output della periferica PSP (Parallel Slave Port) che può essere attivata mediante TRISE<4>.



PORTE

Questa porta ha solo tre pin <RE2:RE0> e il TRISE configura gli I/O con i bit <2:0>, gli altri sono usati per altri scopi !!!

ritorno home page ritorno lezioni microcontrollori apri pagina al motore di ricerca google
home page generale