Gpio Puertos

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 14

Puertos de Entrada/Salida

Puertos de Entrada/Salida

1
©ATE-Universidad de Oviedo

Puertos de Entrada/Salida

Puertos de Entrada/Salida

• Pines de entrada/salida (I/O) de propósito general

• Mediante ellos, el micro PIC puede monitorizar y controlar otros


dispositivos.

• Para añadir flexibilidad al micro, muchos de sus pines de


entrada/salida están multiplexados con funciones alternativas.

•Para la mayoría de los puertos, la dirección del pin I/O es controlada por
el registro de dirección de datos, llamado TRIS. TRISX<n> controla la
dirección del pin n del puerto X.

• Un 1 en el registro TRIS indica que el pin es entrada. Un 0 indica


que es salida.

©ATE-Universidad de Oviedo

1
Puertos de Entrada/Salida

2
Estructura típica de un puerto de entrada/salida
de propósito general.

El valor de RESET de los registros TRIS suele ser un ‘1’, de forma que por
defecto los pines estén configurados como entradas evitando posibles cortocircuitos
en la alimentación que podrían dañar el micro o el resto del sistema.
3
©ATE-Universidad de Oviedo

Puertos de Entrada/Salida

El registro PORT funciona como un latch para los datos de salida. Cuando el
registro PORT se lee (Ej, MOVF PORTB,W), el micro lee los niveles presentes
en los pines de I/O (no en los latches).

Cuando una función está multiplexada en un pin de I/O de proposito general, la


funcionalidad de un pin puede cambiar para acomodarse a los requisitos del módulo
periférico. Por ejemplo, si un micro tiene un conversor A/D, los pines asociados a
este módulo están configurados en un RESET como entradas analógicas para evitar
un consumo de corriente excesivo en el buffer de dicho pin si este estuviera
configurado como entrada digital y el valor de tensión en el pin estuviera a un nivel
intermedio.

©ATE-Universidad de Oviedo

2
Puertos de Entrada/Salida

4
PUERTOS DE ENTRADA/SALIDA – CARACTERISTICAS ELECTRICAS

5
©ATE-Universidad de Oviedo

Puertos de Entrada/Salida

Debe tenerse cuidado con los pines que en determinados momentos son entradas y en otros salida o
viceversa con instrucciones que sean del tipo READ-MODIFY-WRITE como por ejemplo son las
instrucciones BCF ó BSF ó XORWF.
En el ejemplo que se muestra a continuación el usuario esperaría tener al final del programa los pines
7 y 6 del PORTB como salidas con un valor 0 en ellas. Sin embargo, se encuentra con que el bit 6 si
tiene un 0, pero el bit 7 tiene un 1
; Selección inicial del puerto: PORTB<7:4> Entradas
; PORTB<3:0> Salidas
; PORTB<7:4> tiene las resistencias de pull-up activas y no están conectadas a
otro circuito ;;
; PORT latch PORT pins
; ---------- ---------
BCF PORTB, 7 ; 01pp pppp 11pp pppp ;RB7 es entrada
BCF PORTB, 6 ; 10pp pppp 11pp pppp
BSF STATUS, RP0 ;
BCF TRISB, 7 ; 10pp pppp 11pp pppp ;RB7 es salida
BCF TRISB, 6 ; 10pp pppp 10pp pppp ;RB6 es salida
;

©ATE-Universidad de Oviedo

3
Puertos de Entrada/Salida

; El usuario esperaba un valor 00pp pppp en el PORTB.


; Pero el 2º BCF hace que RB7 se latchee en la salida como un 1 y al pasar este
pin a ser salida; el uno aparece en RB7.
6

Puerto A
Puerto bidireccionalde 6 bits RA0-RA5

Los pines RA0:3 y RA5 de este puerto


tienen como función alternativa ser parte
del modulo conversor A/D. RA5 también
puede ser una entrada de selección de
esclavo del módulo SPI.

7
©ATE-Universidad de Oviedo

Puertos de Entrada/Salida

RA4 tiene como función


alternativa de servir como
entrada de reloj para el
temporizador/contador TMR0.

Cuando los pines funcionan como


entradas salidas de proposito
general:

©ATE-Universidad de Oviedo

4
Puertos de Entrada/Salida

• Los pines RA0:3 y RA5 son salidas de tipo push-pull ó entradas


de tipo TTL.

• El pin RA4 es una salida de tipo drenador abierto o una entrada


de tipo Schmitt Trigger.

8
REGISTROS ASOCIADOS AL PUERTO A

Todas las operaciones de escritura sobre el PORTA son


operaciones de lectura-modificación-escritura
.

;Ejemplo de inicialización del PORTA


BCF STATUS, RP0 ;
BCF STATUS, RP1 ; Banco 0
CLRF PORTA ; Inicializo PORTA poniendo los latchesa 0 BSF
STATUS, RP0 ; Banco 1
MOVLW 0x06 ; Configuro todos los pines
MOVWF ADCON1 ; como entradas digitales
MOVLW 0xCF
MOVWF TRISA ; RA<3:0> son entradas
; RA<5:4> son salidas
; TRISA<7:6> se leen siempre como 0

9
©ATE-Universidad de Oviedo

©ATE-Universidad de Oviedo

5
Puertos de Entrada/Salida

Puertos de Entrada/Salida

Configuración del ADCON1

Si se quiere que todos los pines del PORTA funcionen como entradas/salidas digitales
se debe escribir un 011x en los bits PCFG<3:0> de ADCON1 . Otro valor en estos
bits hará que todos ó alguno de los pines del puerto A pasen a funcionar como pines
del módulo conversor A/D (ver Lección - Módulo de conversión A/D en el PIC16F87X
para más detalles) . El valor de RESET del registro ADCON1 es todo a 0, por lo
que por defecto, tras un reset el puerto está configurado como entradas analógicas.

10

Puerto B
Puerto bidireccional de 8 bits RA0-RA7
Si el bit de TRISB es un ‘1’ es entrada y si es un ‘0’ es salida. En el momento
que el pin de PORTB pase a ser una salida (TRISB<x>=0) el circuito de pull-
up se desactiva.

Disponen de resistencias “pull-up” en todos los pines. Se utilizan para que las
entradas al puerto no queden al “aire”. Se configura con un “0” en el bit 7 del
reg. OPTION (RBPU).

El pin RB0 puede emplearse como entrada de interrupción (INT). Para su


configuración se usa el bit INTEDG (OPTION_REG<6>).

Los pines RB4-RB7 pueden emplearse para generar interrupciones cuando se


produzca un cambio en el valor de cualquiera de dichos pines. Para ello el bit
RBIE=1 (INTCON).

La interrupción por cambio en el PORTB puede despertar al micro del modo


dormido SLEEP.

11
©ATE-Universidad de Oviedo

©ATE-Universidad de Oviedo

6
Puertos de Entrada/Salida

Puertos de Entrada/Salida

ESTRUCTURA DE LOS PINES RB7:4

ESTRUCTURA DE LOS PINES RB0:3


12
FUNCION DE LOS PINES

REGISTROS ASOCIADOS AL PUERTO B

13
©ATE-Universidad de Oviedo

©ATE-Universidad de Oviedo

7
Puertos de Entrada/Salida

Puertos de Entrada/Salida
Ejemplo:
CLRF PORTB ;borramos PORTB
BSF STATUS,RP0 ; selección banco1
MOVLW 0xCF ;
MOVFW TRISB ;selecciona RB4 y RB5 como
salidas
14

Puerto C
PORTC es un puerto bidireccional de 8 bits. TRISC (1 entrada, 0 salida).

los pines RC3 y RC4 pueden configurarse para que pasen a formar parte del
módulo I2C.
ESTRUCTURA DE LOS PINES RC<2:0> Y RC<7:5> ESTRUCTURA DE LOS PINES RC<4:3>

15
©ATE-Universidad de Oviedo

©ATE-Universidad de Oviedo

8
Puertos de Entrada/Salida

Puertos de Entrada/Salida

FUNCION DE LOS PINES

16

Puerto D
PORTD es un puerto bidireccional de 8 pines
con entrada de tipo Schmitt Trigger.

TRISD (1 entrada, 0 salida).

El PORTD puede configurarse para que se


comporte como un puerto esclavo paralelo de 8
bits de un microprocesador si se pone el bit de
control PSPMODE (TRISE<4>) a 1.
En este modo de funcionamiento los buffers de
entrada son TTL

17
©ATE-Universidad de Oviedo

©ATE-Universidad de Oviedo

9
Puertos de Entrada/Salida

Puertos de Entrada/Salida

FUNCION DE LOS PINES

REGISTROS ASOCIADOS AL PUERTO D

18

Puerto E
PORTE tiene 3 pines (RE0/RD/AN5, RE1/WR/AN6, y RE2/CS/AN7) que son
individualmente configurables como entradas o salidas.

Como función alternativa, el PORTE puede comportarse como entradas/salidas


de control para el puerto esclavo paralelo del que forma parte junto con el
PORTD si el bit PSPMODE (TRISE<4>) se pone a 1.

Para el funcionamiento en este modo, el usuario debe asegurarse que los bits
TRISE<2:0> están a 1, y que estos pines sean entradas digitales. En este
modo los buffers de entrada son TTL.

Como segunda función alternativa de estos pines está el servir de entradas


analógicas AN5, AN6, AN7. Realmente este es su estado inicial tras un
Power-on-Reset. Debemos modificar el valor de ADCON1 para que funcione
como entradas digitales. Si se trata de leer el valor del PORTE cuando esta
configurado como entradas analógicas, se leen como ‘0’. El registro TRISE
debe tener sus bits a ‘0’ (entradas) cuando se usen como entradas digitales.

19
©ATE-Universidad de Oviedo

©ATE-Universidad de Oviedo

10
Puertos de Entrada/Salida

Puertos de Entrada/Salida

ESTRUCTURA DE LOS PINES DE PORTE

20
FUNCION DE LOS PINES

REGISTROS ASOCIADOS AL PUERTO E

21
©ATE-Universidad de Oviedo

©ATE-Universidad de Oviedo

11
Puertos de Entrada/Salida

Puertos de Entrada/Salida

Bits de control/estado del puerto esclavo


paralelo: bit 7 IBF: Input Buffer Full Status bit
1 = Se ha recibido una palabra y está a la espera de ser leida.
0 = No se ha recibido palabrabit 6 OBF: Output Buffer Full Status bit
1 = El buffer de salida todavía tiene la palabra que se ha intentado enviar
previamente.
0 = El buffer de salida ha sido leído.
bit 5 IBOV: Input Buffer Overflow Detect bit (en modo microprocesador)
1 = Se produjo una escritura cuando la palabra anterior aún no habia sido leida. Debe limpiarse por
software.
0 = No se produjo sobreescriturabit 4 PSPMODE: Parallel Slave Port Mode
Select bit
1 = PORTD funciona en modo puerto esclavo paralelo.
0 = PORTD funciona como puerto de
entrada salida de proposito general.bit 3 No
implementado. Se lee como ‘0’.
Bits de direccionde datos del PORTE: bit 2 Bit de
control de la dirección del pin RE2/CS/AN7
1 = Entrada0 = Salida
bit 1 Bit de control de la dirección del pin RE1/WR/AN6
1 = Entrada
0 = Salida
bit0 Bit de control de la dirección del pin RE0/RD/AN5
1 = Entrada
0 = Salida

22

bit 7 ADFM: bit de selección del formato del resultado de la conversión A/D.
1 = Justificado a la derecha. Los 6 bits más significativos de ADRESH se leen como ‘0’.
0 = Justificado a la derecha. Los 6 bits más significativos de ADRESL se leen como ‘0’.
bit 6-4 No implementados: Leidos como ‘0’ bit 3-0 PCFG3:PCFG0: bits de control de
configuración del puerto A/D.

23
©ATE-Universidad de Oviedo

©ATE-Universidad de Oviedo

12
Puertos de Entrada/Salida

Puertos de Entrada/Salida

PUERTOS ESCLAVO PARALELO (PSP)

PORTD funciona como un puerto esclavo paralelo de 8 bits si el bitPSPMODE


(TRISE<4>) se pone a ‘1’. El PORTD puede ser leído o escrito por el sistema
que rodea al microcontrolador usando como señales de control los pines de
entrada RE0/RD para lectura y RE1/WR para escritura.
Si se habilita el PSPMODE, el pinRE0/RD serála entrada de control para lectura,
RE1/WR serála entrada de control de escritura y RE2/CS serála entrada de
Selección de chip.
Para que estos bits del PORTE se comporten como pines de controldel PSP se debe
definir los bits de direcciones del registro TRISE (TRISE<2:0>) como entradas (‘1’)
Y los bits de configuración del conversor A/D PCFG3:PCFG0 (ADCON1<3:0>) para
Que sean digitales.
Realmente hay 2 latchesde 8 bits: uno para la entrada y otro para la salida. El
Usuario escribe en el latchPORTD de salida y lee del latchPORTD de entrada.
En el modo PSP,elregistro TRISD es ignorado ya que es el dispositivo externo
(microprocesador) el que controla la dirección de los datos.

24
FORMAS DE ONDA DE ESCRITURA DEL PUERTO ESCLAVO PARALELO

Una escritura al PSP se produce cuando las líneas CS y WR se ponen a la vez a nivel bajo. Una
vez que el dispositivo externo considera finalizada la escritura, coloca a nivel alto alguna de esas
2 líneas. Este paso a nivel alto es detectado por el microcontrolador durante el ciclo Q2 de
algún ciclo de instrucción que se esté ejecutando. El flag de Buffer de entrada completo (IBF)
se coloca a 1 en el ciclo Q4 de la instrucción. El flag de interrupción PSIPF (PIR1<7>) también
se pone a ‘1’ pudiendo ocasionar un salto a la rutina de interrupción si los bits PSPIE (PIE1<7>)
y los bits GIE y PEIE del INTCON están a 1.
El flag IBF solo puede limpiarse si se lee el PORTD.
El flag de overflow en el buffer de entrada IBOV (TRISE<5>) se pondrá a ‘1’ si el dispositivo
externo intenta hacer una segunda escritura sin que el nucleo del microcontrolador haya leído el
PORTD.

25
©ATE-Universidad de Oviedo

©ATE-Universidad de Oviedo

13
Puertos de Entrada/Salida

Puertos de Entrada/Salida

FORMAS DE ONDA DE LECTURA DEL PUERTO ESCLAVO PARALELO

Una lectura del PSP se realiza cuando el sistema externo pone a la vez las señales CS y RD a nivel bajo. El
flag que indica buffer de salida lleno OBF (TRISE<6>) se pone a ‘0’ inmediatamente, indicando que el latch
del PORTD está esperando a ser leído por el bus externo. El programa del microcontrolador debe colocar en
el PORTD el dato del que quiere informar al resto del sistema. Cuando el sistema externo pone la señal CS o
la RD a nivel alto, el microcontrolador espera al ciclo Q2 de la siguiente instrucción y en el ciclo Q4 de esa
instrucción pone a 1 el flag de interrupción PSPIF indicando que la lectura del dato por parte del dispositivo
externo se ha completado.
Cuando no estamos en modo PSP, los bits IBF y OBF permanecen a ‘0’. No obstante, si el bit IBOV había
sido previamente puesto a 1, debe limpiarse en el programa.
Como hemos visto, el flag PSPIF se pone a 1 cuando se ha completado una lectura o escritura, este flag
debe limpiarse por parte del programa de usuario. La interrupción puede deshabilitarse si se pone a ‘0’ el bit
de habilitación PSPIE (PIE<7>).

26

©ATE-Universidad de Oviedo

14

También podría gustarte