Electrónica•Ingenia

Electrónica•Ingenia
jueves, 22 de marzo de 2012

Tema 2.- Gestión de los puertos (I)

Los microcontroladores PIC tienen terminales de I/O (entrada/salida) divididos en puertos. Y estos son puentes entre el microcontrolador y el mundo exterior. Los puertos se encuentran nombrados alfabéticamente A, B, C, D, etc. Cada puerto puede llegar a tener 8 pines que se comportan como una entrada/salida digital. 

PIC16F88 en encapsulado DIP.
2.1 Características Principales.
Los pines de I/O (entrada/salida) de propósito general pueden considerarse como los periféricos más simples. Se caracterizan por ser independientes, por lo que cada terminal se puede programar de forma independiente como I/O digital.
Para añadir flexibilidad y funcionalidad al microcontrolador, algunos pines de los puertos tienen diferentes periféricos implementados, como pudimos ver en la entrada anterior.
Cuando se habilita un periférico de algún pin este deja de comportarse como un I/O digital de propósito general.
La habilitación como entrada o salida se realiza a través del registro TRISx, en el banco 1 de la memoria RAM. Un valor 0 en estos registros indica que el terminal correspondiente del puerto se configurará como salida, sin embargo con un 1 el pin pasará a ser una entrada.
  • TRISA: 85h
  • TRISB: 86h
  • TRISC: 87h
  • TRISD: 88h
  •  ....................

Y la gestión del bus de datos se realiza a través del registro PORTx, en este caso en el banco 0 de la memoria RAM. Cuando se lee un puerto, el PIC lee los valores presentes en los pines (No en el LATCH). Por ello ahí que tener muy en cuenta los comandos leer-modificar-escribir (read-modify-write RMW) aplicados a los puertos y al cambiar el sentido de circulación de un pin de entrada a salida.
  • PORTA: 05h
  • PORTB: 06h
  • PORTC: 07h
  • PORTD: 08h
  •  ....................
En la  página 52 del datasheet podemos ver la siguiente tabla con el sumario de los registros asociados al PORTA del PIC16F88.

Pag.52 datasheet PIC16F88 

2.2 Puerto A del PIC16F88.
Como podemos ver en la página 51 del datasheet, el PORTA es un puerto bidireccional de 8 bits. El correspondiente registro de dirección de datos es el TRISA, como hemos podido ver en el punto anterior. Estableciendo un bit del TRISA como 1 hará que el pin correspondiente al PORTA sea una entrada (es decir, pone el correspondiente controlador de salida en un modo de alta impedancia). Limpiando un bit del TRISA (=0) hará que el pin que corresponda en el PORTA sea una salida. Hasta aquí lo mismo que hemos comentado también en el punto anterior.
Hay un tercer registro, el ANSEL (Selección de modo analógico/digital), pero este lo veremos en detalle más adelante.

Funciones de cada pin del Puerto A.
Una de las peculiaridades del PORTA es el pin RA4/TOCKI. Este pin puede ser configurado como entrada/salida digital o bien como entrada de temporizador/contador.  El quebradero de cabeza de todo programador que comienza en el mundo de los PICs es el uso del RA4 como salida/entrada digital.
RA4 como salida 

El pin RA4 configurado como I/O se comporta como colector abierto, por lo tanto, se debe conectar una resistencia de pull-up (resistencia conectada entre el pin y VDD). Por esto, cabe destacar, que como salida se comporta al contrario que otro pin. Un 1 lógico en la salida corresponde a un 0 por software. Además como salida no puede soportar grandes cargas de fuente, solo en modo sumidero.

A diferencia del PIC16F84A, en el PIC16F88, los pines RA6 y RA7 pueden ser utilizados como I/O digital, además de su uso como entrada del oscilador externo. Para poder utilizarlos sólo tendremos que configurar al PIC para que trabaje con el oscilador interno.

También podemos disponer del pin RA5 como I/O digital deshabilitando la función MCRL (Master Clear Reset).


2.3 Puerto B del PIC16F88.
El Puerto B, al igual que el Puerto A, es un puerto bidireccional de 8 bits. Para configurar el puerto B como entradas o salidas se utiliza el mismo registro, pero en este caso el TRISB. Con un 1 se consigue que el pin del Puerto B trabaje como entrada. Al programar un bit del TRISB con 0 se consigue que este trabaje como salida.
El puerto B tiene conectado internamente unas resistencias de pull-up conectadas a sus pines. Su uso puede ser el de fijar el pin a un nivel de VDD y su uso puede ser habilitado y deshabitado mediante software. Usando el bit llamado RBPU (RB Pull Up) que se encuentra en el registro OPTION_REG.

Pag. 58 datasheet PIC16F88.
La resistencia de pull-up se desconecta automáticamente en un pin cuando este es configurado como salida.

2.4 Características Eléctricas de los Puertos.
En la siguiente tabla de especificaciones eléctricas, podemos observar todos los valores máximos de corriente y voltaje de los pines de los diferentes puertos de PIC.  

Pag. 163 Datasheet PIC16F88.

Como vemos la corriente máxima de entrada y de salida en cualquier pin I/O es de 25mA. Pero en el global del puerto sólo es de 100mA de entrada y salida tanto en el PORTA como en el PORTB.
También vemos que la máxima corriente de entrada en el pin VDD es de 200mA y en Vss es también 200mA pero en esta ocasión de salida.
Todo estos valores máximos hay que tenerlos en cuenta a la hora de diseñar un circuito con el PIC.
Las salidas del PIC pueden entregar niveles TTL siempre y cuando el voltaje de alimentación aplicado a VDD sea de 5V.


Esta es la teoria relativa a los puertos del PIC16F88. Ahora que ya conocemos un poco más como es este microcontrolador nos centraremos en hacer unos ejemplos de gestión de puertos  en C utilizando el compilador C CCS. 
Share this post
  • Share to Facebook
  • Share to Twitter
  • Share to Google+
  • Share to Stumble Upon
  • Share to Evernote
  • Share to Blogger
  • Share to Email
  • Share to Yahoo Messenger
  • More...

1 comentarios: