¿Cómo configurar el direccionamiento de esclavos con un HT16K33 en Proteus?

0

He configurado el siguiente circuito en Proteus:

UnPIC12F1822estáconectadoaunHT16K33utilizandounbusI2C.QuieroconfigurarelHT16K33parausarlasiguientedirección:

A0=1A1=0A2=0

Heconfiguradolospinescomoseexplicaen Hoja de datos de HT16K33 :

Segúnladocumentación,ladirecciónenviadaporelmaestrodebeser:

1110A2A1A0R/W

Envío0xE2(0b11100010).Sinembargo,nofunciona,elHT16K33noenvíaunACK:

Aquí está mi código:

I2C1_Init(100000);
I2C1_Start();
I2C1_Wr(0xE2);

Si envío 0xE0 (la dirección predeterminada), funciona (se envía un ACK).

    
pregunta tigrou

2 respuestas

1

Llegué a la conclusión de que el chip HT16K33 necesita algún tiempo para inicializar y configurar el direccionamiento. De lo contrario, el PIC envía los datos a través del bus I2C demasiado pronto y el HT16K33 no está listo. Agregando un pequeño retraso antes de enviar los datos, resuelva el problema (se envía un ACK):

void main() {
   delay_ms(10);

   I2C1_Init(100000);
   I2C1_Start();
   I2C1_Wr(0xE2);
}

Tal vez haya una mejor manera de lograr esto.

    
respondido por el tigrou
1

De respuestas tigrosas y de acuerdo con la hoja de datos (página 8):

  

Las transferencias de datos en el bus I2C deben evitarse durante 1 ms después de un encendido para permitir la finalización de la acción de restablecimiento.

    
respondido por el Nicolas Appriou

Lea otras preguntas en las etiquetas