2016/04/14

Expansor de puerto de propósito general PCA9554.

Cuenta con ocho pines que se pueden configurarse como entradas o salidas, un pin de interrupción para los eventos en los pines de entradas, además de poder trabajar en un rango de voltaje de (2,3 a 5,5) V. En esta entrada veremos como podemos usarlo en PIC-C CCS apoyándonos con ISIS Proteus para la simulación.

Aplicación típica.
Figura-01.


Para la dirección del protocolo de comunicación I2C tenemos disponibles tres pines A2, A1 y A0 (figura-02) el cual tendremos ocho combinaciones y teóricamente podemos usar ocho dispositivos de las mismas características en el mismo bus.

Configuración de pines.
Figura-02.


La dirección es de ocho bits, como se muestra en la figura-03.

Dirección PCA9554.
Figura-03.


Para el ejemplo de la figura-01 y los ejercicio N°1 (figura-04) y ejercicio N°1 (figura-07) tenemos las siguientes direcciones como vemos en la tabla-01.

Dirección del PCA9554
Dispositivo
Set
A2
A1
A0
R/W
Hexadecimal
Imagen 1
0100
0
0
0
0
0x40
Ejercicio 1
0100
0
1
1
0
0x46
Ejercicio 2
0100
0
0
1
0
0x42
Tabla-01.


Ejercicio N°1.

Configuraremos los pines del PCA9554 como salidas y crearemos una rutina de encendido para los Led que vemos en el diagrama de la figura-04.

Diagrama del ejercicio 1.
Figura-04.


Para la conexión entre el PCA9554 que actúa como dispositivo esclavo y el PIC18F452 como maestro, tenemos la recomendada por el fabricante como vemos en la figura-05.

Resistencias Pull-up.
Figura-05.


Para la configuración del bus I2C en PIC-C usamos la opción Fast y Force Hardware ya que el PIC18F452 los soporta (figura-06), la velocidad de micro es 4 MHz típica para simulaciones sencillas.

PIC-C I2C.
Figura-06.


Para configurar los pines del PCA9554 usamos el comando 0x03.
  • Los bits en bajo se toman como salidas (0 = output)
  • Los bits en alto se toman como entrada (1 = input)

El código en PIC-C seria el siguiente, donde addrreess es la dirección del dispositivo.



Para escribir en el puerto usaremos el comando 0x01 y la siguiente rutina, donde “salida” es una variable de 8 Bits.



Descarga [MF] [MG].



Ejercicio N°2.

Configuraremos los pines del PCA9554 como entradas y leeremos su valor y lo reflejaremos en el puerto D del micro como vemos en el diagrama de la figura-07.

Diagrama ejercicio 2.
Figura-07.


Usamos los botones directamente, haciendo uso de las resistencias Pull-up como vemos es la figura-08.

Diagrama de bloques del PCA9554.
Figura-08.


El código en PIC-C para configurar los pines del PCA9554 como entrada seria el siguiente.



El código en PIC-C para leer los pines de entrada  del PCA9554 seria el siguiente, mediante el comando 0x00.




Solo tomando en consideración que el Bits de W/R seria 1 como se aprecia en la figura-03.

Descarga [MF] [MG].



Conclusiones.

Como siempre son ejercicio orientado a la simulación y poner en práctica los conceptos básicos, varias conexiones de obvian, así que al final coloco los DataSheet de los dispositivos usados si se quieren implementar.
No se toca los Fuses pero se pueden consultar en main.h, ya saben cualquier corrección o duda usar los comentarios o los canales de comunicación del blog.


DataSheet.

  • PCA9554 [MG] [MF].
  • PIC18F452 [MG] [MF].
  • Comunicación I2C (PDF) [MG] [MF].


También te pueden interesar:


5 22XD: Expansor de puerto de propósito general PCA9554. Cuenta con ocho pines que se pueden configurarse como entradas o salidas, un pin de interrupción para los eventos en los pines de entradas, ...
< >