5.1 ARQUITECTURA DE LOS PUERTOS DE I/O. Los puertos de microcontrolador son el punto de comunicación entre el microcontrolador y el mundo exterior, a través de ellos se pueden efectuar procesos de control electrónico sobre dispositivos de potencia, instrumentación telemetría etc. además permiten también recibir señales del mundo exterior. 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. 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. 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). LÍNEAS DE ENTRADA/SALIDA (E/S) – PUERTOS Los microcontroladores cuentan con una serie de pines destinados a entrada y salida de datos o señales digitales. A estos pines se les denomina “Puerto” Como mencionamos anteriormente, todo el funcionamiento del microcontrolador está controlado a través de los registros. Los puertos no son la excepción, también están controlados por los registros. Por esto, un puerto no puede estar formado por más de 8 pines; 1 Pin por cada Bit de un registro. Un puerto si puede estar formado por menos de 8 pines. PUERTOS DE ENTRADA/SALIDA “PIC” Con el propósito de sincronizar el funcionamiento de los puertos de E/S con la organización interna del microcontrolador de 8 bits, ellos se agrupan, de manera similar a los registros, en cinco puertos denotados con A, B, C, D y E. Todos ellos tienen las siguientes características en común: Por las razones prácticas, muchos pines de E/S son multifuncionales. Si un pin realiza una de estas funciones, puede ser utilizado como pin de E/S de propósito general. Cada puerto tiene su propio registro de control de flujo, o sea el registro TRIS correspondiente: TRISA, TRISB, TRISC etc. lo que determina el comportamiento de bits del puerto, pero no determina su contenido. Al poner a cero un bit del registro TRIS (pin=0), el pin correspondiente del puerto se configurará como una salida. De manera similar, al poner a uno un bit del registro TRIS (bit=1), el pin correspondiente del puerto se configurará como una entrada. Esta regla es fácil de recordar: 0 = Entrada 1 = Salida. ARQUITECTURA DE LOS PUERTOS DE I/O PIC 16F84A Los microprocesadores PIC16F84 tienen 2 puertos de entrada/salida paralelos de usos generales denominados Puerto A y Puerto B. El Puerto A es de 4 bits y el Puerto B es de 8 bits. En ellos podremos conectar los periféricos o circuitos necesarios como por ejemplo los módulos LCD, motores eléctricos, etc; pero estas conexiones no se podrán realizar arbitrariamente. Existen unas reglas básicas que deberán cumplirse para que el microcontrolador no sufra daños o se destruya. Para ello es necesario conocer los limites de corriente que puede manejar el microcontrolador. Estructura básica de un puerto de I/O LIMITE DE CORRIENTE PARA LOS PUERTOS “A” Y “B” Los puertos “A” y “B” del microcontrolador podrán ser programados como entradas y salidas indiferentemente. Para el caso de que sean programados como salida se denominan “Modo Fuente” por que suministran corriente y cuando son programados como entrada se denominan “Modo Sumidero” por que reciben corriente. La máxima corriente que puede suministrar una línea programada como salida es de 20 mA, pero si utilizamos toda las líneas del puerto “A” programadas como salida, no deberá exceder de 50mA para todo el puerto “A”. Para el caso del puerto “B” no deberá exceder de 100 mA. Si las programamos como entradas (Sumidero), la corriente máxima que puede manejar una sola línea es de 25 mA. Para el caso del puerto “A” programado con todas sus líneas como entrada, la máxima es de 80 mA. En el caso del puerto “B” es de 150 mA. En caso de querer utilizar periféricos que manejen mayor cantidad de corriente de la especificada, habrá que aplicar un circuito acoplador como por ejemplo los buffers, transistores que se encarguen de controlar la corriente, etc. IDENTIFICACIÓN DE LOS PINES UTILIZADOS PARA LOS PUERTOS DE ENTRADA Y SALIDA
En la imagen siguiente se podrá observar claramente que el
microcontrolador tiene dos puertos denominados “A” y “B”. El puerto “A” tiene 5 líneas disponibles (RA0, RA1, RA2, RA3, RA4) y el puerto “B” tiene 8 líneas disponibles (RB0, RB1, RB2, RB3, RB4, RB5, RB6, RB7). Estas son las líneas que estarán destinadas a comunicar el microcontrolador con el mundo exterior, como por ejemplo motores, diodos luminosos “Leds”, módulos LCD, teclados matriciales, etc. También hay que hacer mención a que el Pin número 3 perteneciente al puerto “A” (RA4) también tiene otra nomenclatura denominada “TOCKI”, lo cual quiere decir que esta línea se puede programar como entrada, salida y temporizador/contador. CONFIGURACIÓN DE LOS PUERTOS DE ENTRADA/SALIDA Los bits de cada puerto se configuran mediante los bits correspondientes de un registro de control asociado que recibe el nombre de TRIS. En realidad cada puerto soporta dos registros: 1. El registro de datos, al que se denomina Puerto A o B (PortA o PortB). 2. El registro de control TRISA o TRISB, con el que se programa el sentido (Entrada o Salida) de las líneas de cada puerto. Los Puertos A y B se corresponden con las posiciones 5 y 6 del área de datos. Cada uno de sus bits puede programarse como una línea de Entrada o de Salida, según se ponga un 1 ó un 0 en el bit del registro de control TRIS correspondiente. Un 1 en el bit “x” del registro TRISA pone en alta impedancia (Entrada) la línea asociada “x” del Puerto A. Si en el bit “x” de TRISA hubiese un 0, el contenido del biestable de datos correspondiente del Puerto A pasaría a la patita de E/S externa. Cualquier línea puede funcionar como Entrada o como Salida. Sin embargo, si actúa como Entrada, la información que se introduce desde el exterior no se memoriza o graba, pasa simplemente por un dispositivo triestado por lo cual el valor de dicha información debe mantenerse hasta que sea leída. La lectura se realiza en “tiempo real”. Cuando una patita de E/S funciona como salida, el bit que proviene del bus de datos se guarda en el biestable del dato con lo cual la información que ofrece esta patita permanece invariable hasta que se reescriba otro bit. PUERTO PORTA Y REGISTRO TRISA
El puerto PORTA es un puerto bidireccional, de 8 bits de anchura.
Los bits de los registros TRISA y ANSEL controlan los pines del PORTA. Todos los pines del PORTA se comportan como entradas/salidas digitales. Cinco de ellos pueden ser entradas analógicas (denotadas por AN): RA0 = AN0 (determinado por el bit ANS0 del registro ANSEL) RA1 = AN1 (determinado por el bit ANS1 del registro ANSEL) RA2 = AN2 (determinado por el bit ANS2 del registro ANSEL) RA3 = AN3 (determinado por el bit ANS3 del registro ANSEL) RA5 = AN4 (determinado por el bit ANS4 del registro ANSEL) Similar a que los bits del registro TRISA determinan cuáles pines serán configurados como entradas y cuáles serán configurados como salidas, los bits apropiados del registro ANSEL determinan si los pines serán configurados como entradas analógicas o entradas/salidas digitales. PUERTO PORTB Y REGISTRO TRISB
El puerto PORTB es un puerto bidireccional, de 8 bits de anchura.
Los bits del registro TRISB determinan la función de sus pines.