A ver, para empezar te falta colocar las resistencias de pull-up en las líneas SDA y SCL.
Para escribir un dato en la 24LC256 debes:
1. Enviar la condición de start.
2. Enviar la dirección de la memoria (en binario: 1 0 1 0 A2 A1 A0 0). En este caso, A2, A1, y A0 están conectadas a tierra, por lo que las tres valen '0'). Entonces la dirección es: 10100000.
3. Enviar el byte alto de la dirección a escribir.
4. Enviar el byte bajo de la dirección a escribir.
5. Enviar el dato a guardar.
6. Enviar la condiión de stop.
Un ejemplo:
Se desea escribir el dato 0x15 en la posición 0x0026 de la 24LC256.
Bueno, así debería funcionarte. Hasta luego.
Para escribir un dato en la 24LC256 debes:
1. Enviar la condición de start.
2. Enviar la dirección de la memoria (en binario: 1 0 1 0 A2 A1 A0 0). En este caso, A2, A1, y A0 están conectadas a tierra, por lo que las tres valen '0'). Entonces la dirección es: 10100000.
3. Enviar el byte alto de la dirección a escribir.
4. Enviar el byte bajo de la dirección a escribir.
5. Enviar el dato a guardar.
6. Enviar la condiión de stop.
Un ejemplo:
Se desea escribir el dato 0x15 en la posición 0x0026 de la 24LC256.
Código [Seleccionar]
i2c_start(); //Envía la condición de start.
i2c_write(0b10100000); //Envía la direccón de esclavo de la 24LC256 en modo escritura.
i2c_write(0x00); //Envís el byte alto de la dirección a escribir.
i2c_write(0x26); //Envía el byte bajo de la dirección a escribir.
i2c_write(0x15); //Envía el dato a guardar.
i2c_stop(); //Envía la condición de stop.
delay_ms(5); //Espera que escriba el dato.
Bueno, así debería funcionarte. Hasta luego.