A ver si les voy entendiendo, se me hace mas facil lo de utilizar un for para borrar la memoria entonces tendría que hacer lo siguiente para el caso de una 24lc512:
for(i=0;i<=localidadmaxima;i++)
{
i2c_write(i,0xff)
}
Para probar lo de la escritura y lectura utilicé un código que encontré en un post, solo le modifiqué algunas cosas para adaptarlo a la lc512. Segun yo estoy mapeando toda la memoria, y pues a través del puerto serie observo que si se grabaron datos en todas las posiciones que utilicé.
El codigo que utilicé fue el siguiente:
#include <18f4320.h>
#use delay(clock=3579545)
#fuses XT,NOPUT,NOPROTECT,NOBROWNOUT,NOLVP,NOWDT
#define EEPROM_SDA PIN_C4
#define EEPROM_SCL PIN_C3
#use rs232(baud=9600, xmit=PIN_c6,rcv=PIN_c7)
#use i2c(master, sda=EEPROM_SDA, scl=EEPROM_SCL, FORCE_SW)
#include <24LC512.c>
long int dir;
int val;
main()
{
val=0;
delay_ms(50);
printf("Grabando...");
delay_ms(500);
init_ext_eeprom();
for(dir=0;dir<=8192;++dir)
{
write_ext_eeprom(dir,val);
val=val+1;
if (val>=255)
{
val=0;
}
delay_ms(1);
}
delay_ms(500);
printf("Leyendo...");
delay_ms(200);
printf("Iniciando Transmision");
for(dir=0;dir<=8192;++dir)
{
printf(" %lu --> %u",dir,read_ext_eeprom(dir));
delay_ms(500);
}
printf("Fin de la Transmision");
delay_ms(1000);
while(true)
{
}
}
Segun habia leído por ahí no se podia mapear toda la memoria y pues me quedó esa duda, porque entonces que estaría haciendo yo. Si me pueden despejar esa incógnita se los agradeceria bastante.
Saludos y gracias por todo