Lezione 3

Step 2/3

Passo precedenteInizio lezionePasso successivo

Stadi d'uscita delle linee di I/O

 

Per rendere più adattabili i PIC alle diverse esigenze di utilizzo, la Microchip ha implementato diverse tipologie di stati d'uscita per le linee di I/O. Esistono quindi dei gruppi di pin il cui comportamento è leggermente differenziato da altri gruppi. Conoscendo meglio il funzionamento dei diversi stadi d'uscita potremo sfruttare al meglio le loro caratteristiche ed ottimizzare il loro uso nei nostri progetti.

Stadio d'uscita delle linee RA0, RA1, RA2 e RA3

Iniziamo dal gruppo di linee RA0, RA1, RA2 ed RA3 per le quali riproduciamo, nella figura seguente, lo schema dello stadio d'uscita estratto dal data sheet della Microchip:

Come accennato al passo precedente, la configurazione di una linea come ingresso o uscita dipende dallo stato dei bit nel registro TRIS (TRISA per la porta A e TRISB per la porta B).

Prendiamo come esempio la linea RA0 ed analizziamo il funzionamento dello stadio d'uscita sia quando la linea funziona in ingresso, che quando funziona in uscita.

Funzionamento in ingresso

Per configurare la linea RA0 in ingresso, dobbiamo mettere a 1 il bit 0 del registro TRISA con l'istruzione:

bsf	TRISA,0

Questo determina una commutazione ad 1 dello stato logico del flip-flop di tipo D-latch indicato nel blocco con il nome TRIS latch. Per ogni linea di I/O esiste uno di questi flip-flop e lo stato logico in cui si trova dipende strettamente dallo stato logico del relativo bit nel registro TRIS (anzi per meglio dire ogni bit del registro TRIS è fisicamente implementato con un TRIS latch).

L'uscita Q del TRIS latch è collegata all'ingresso di una porta logica di tipo OR. Questo significa che, indipendentemente dal valore presente all'altro ingresso, l'uscita della porta OR varrà sempre 1 in quanto uno dei suoi ingressi vale 1 (vedi tavola della verità). In questa condizione il transistor P non conduce e mantiene la linea RA0 scollegata dal positivo d'alimentazione.

Allo stesso modo l'uscita negata del TRIS latch è collegata all'ingresso di una porta AND quindi l'uscita di questa varrà sempre 0 in quanto uno dei suoi ingressi vale 0 (vedi tavola). In questa condizione anche il transistor N non conduce mantenendo la linea RA0 scollegata anche dalla massa. Lo stato logico della linea RA0 dipenderà esclusivamente dalla circuiteria esterna a cui la collegheremo.

Applicando 0 o 5 volt al pin RA0, sarà possibile leggerne lo stato sfruttando la circuiteria d'ingresso del blocco rappresentata dal TTL input buffer e dal latch d'ingresso.

Funzionamento in uscita

Per configurare la linea RA0 in uscita, dobbiamo mettere a 0 il bit 0 del registro TRISA con l'istruzione:

bcf	TRISA,0

Questo determina la commutazione a 0 dell'uscita Q del TRIS latch (ed a 1 dell'uscita Q negata). In questo stato il valore in uscita dalle porte OR e AND dipende esclusivamente dallo stato dell'uscita Q negata del Data Latch. Come per il TRIS latch, anche il Data Latch dipende dallo stato di un bit in un registro, in particolare del registro PORTA. La sua uscita negata viene inviata all'ingresso delle due porte logiche OR e AND e quindi direttamente sulla base dei transistor P ed N.

Se mettiamo a 0 il bit 0 del registro PORTA con l'istruzione:

bcf	PORTA,0

otterremo la conduzione del transistor N con conseguente messa a 0 della linea RA0. Se invece mettiamo a 1 il bit 0 con l'istruzione:

bsf	PORTA,0

otterremo la conduzione del transistor P con conseguenza messa a +5 volt della linea RA0. In questa condizione è sempre possibile rileggere il valore inviato sulla linea tramite la circuiteria d'ingresso.

Stadio d'uscita della linea RA4

Analizziamo ora il funzionamento dello stadio d'uscita della linea RA4 che si differenzia da tutte le altre linee di I/O in quanto condivide lo stesso pin del PIC16F84 con il TOCKI che andremo ad analizzare al passo successivo.

Nella figura seguente viene riprodotto lo schema a blocchi dello stadio d'uscita estratto dal data sheet Microchip:

La logica di commutazione è sostanzialmente identica al gruppo di linee RA0-3 ad eccezione dell'assenza della porta OR e del transistor P, ovvero di tutta la catena che consente di collegare al positivo la linea RA4. Questo significa, in termini pratici, che quando la linea RA4 viene programmata in uscita e messa a 1 in realtà non viene connessa al positivo ma rimane scollegata. Tale tipo di circuiteria d'uscita viene denominata a "collettore aperto" ed è utile per applicazioni in cui sia necessario condividere uno stesso collegamento con più pin d'uscita e ci sia quindi la necessità di mettere in alta impedenza una linea d'uscita senza doverla riprogrammare come linea d'ingresso.

Se vogliamo essere sicuri che la linea RA4 vada a 1 dovremo collegare esternamente una resistenza di pull-up, ovvero una resistenza collegata al positivo di alimentazione.

Vedremo in seguito l'utilizzo della linea indicata sullo schema TMR0 clock input.

Stadio d'uscita delle linee RB0, RB1, RB2 ed RB3

Anche per questo gruppo di linee rimane sostanzialmente invariata la logica di commutazione. Esse dispongono in aggiunta una circuiteria di weak pull-up attivabile quando le linee sono programmate in ingresso.

In ingresso infatti, come spiegato precedentemente, le linee vengono completamente scollegate dal PIC in quanto sia il transitor P che il transistor N sono aperti. Lo stato delle linee dipende quindi esclusivamente dalla circuiteria esterna. Se tale circuiteria è di tipo a collettore aperto o più semplicemente è costituita da un semplice pulsante che, quando premuto, collega a massa la linea di I/O, è necessario inserire una resistenza di pull-up verso il positivo per essere sicuri che quando il pulsante è rilasciato ci sia una condizione logica a 1 stabile sulla linea d'ingresso. La circuiteria di weak pull-up consente di evitare l'uso di resistenze di pull-up e può essere attivata o disattivata agendo sul bit RBPU del registro OPTION .

Nella figura seguente viene riprodotto lo schema a blocchi dello stadio d'uscita estratto dal data sheet Microchip:

La sola linea RB0 inoltre, presenta una caratteristica molto particolare. Essa, quando viene configurata come linea di ingresso, può generare, in corrispondenza di un cambio di stato logico, un interrupt, ovvero una interruzione immediata del programma in esecuzione ed una chiamata ad una subroutine speciale denominata interrupt handler. Ma di questo parleremo in seguito.

Stadio d'uscita delle linee RB4, RB5, RB6 e RB7

La circuiteria di commutazione di questo gruppo di linee è identica al gruppo RB0-3. Queste linee dispongono anche della circuiteria di weak pull-up. In più rispetto alle linee RB0-3 hanno uno stadio in grado di rilevare variazioni di stato su una quansiasi linea e di generare un interrupt di cui parleremo nelle prossime lezioni.

Nella figura seguente viene riprodotto lo schema a blocchi dello stadio d'uscita estratto dal data sheet Microchip:

 
Home page

PICPOINT, SXPOINT and ELETTROSHOP (C) 1997/98 by Andrea Galizia
For comments on this web site, write to webmaster@picpoint.com
Web design by Tiziano Galizia

Pic by example (c) 1997/98 by Sergio Tanzilli & Tiziano Galizia