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.
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.
La dirección es de ocho bits, como se muestra en la 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.
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.
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.
Para configurar los pines del PCA9554 usamos el comando 0x03.
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.
Usamos los botones directamente, haciendo uso de las resistencias Pull-up como vemos es la 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.
DataSheet [MEGA]
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.
Figura-02 |
La dirección es de ocho bits, como se muestra en la figura-03.
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.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.
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.
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.
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.Figura-07. |
Usamos los botones directamente, haciendo uso de las resistencias Pull-up como vemos es la figura-08.
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.
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.
Ejercicios ADC [MEGA]
DataSheet [MEGA]
- PCA9554 y PIC18F452.
- Comunicación I2C (Guía).
Comentarios
Publicar un comentario
🤔 con que esto tenemos...