Qué tal:
La dirección de esclavo de la 24LC256 es:
Dirección fija de 4 bits A2 A1 A0 Lectura/Escritura
Para especificar lectura se envía un '1', para escritura se envía un '0'.
Por lo tanto, si se quiere escribir un dato en la 24LC256 con sus terminales A2, A1 y A0 = 110, hay que enviar:
1010 110 0
Dirección fija A2 A1 A0 Escritura
Para la lectura sería:
1010 110 1
Dirección fija A2 A1 A0 Lectura
Realizar una lectura en una memoria i2c es más complicado que realizar una escritura, ya que para realizar la lectura, primero hay que direccionar el dispositivo en modo escritura para indicarle la dirección que se va a leer.
Esto sería más o menos así:
Leer el dato contenido en la dirección 0x1052 de una 24LC256 que tiene sus líneas A2A1A0=011.
i2c_start();
i2c_write(0b10100110); //Direeciona la eeprom en modo escritura.
i2c_write(0x10); //Byte alto de la dirección a acceder.
i2c_write(0x52); //Byte bajo de la dirección a acceder.
i2c_start(); //Envía restart.
i2c_write(0b10100111); //Direcciona la eeprom en modo lectura.
dato=i2c_read(0); //Lee el dato y no envía ACK.
i2c_stop();
Hasta pronto.