Hola:
Tengo un problema con la memoria i2c (en este caso 24C02 pero podría usar otra), la rutina de lectura es la siguiente:
void leepos(int pos){ // Rutina de escritura I2C parcial
i2c_start(); // Inicializo comunicación I2C
i2c_write(0xA0); // Envio Dirección de dispositivo I2C + R/W
i2c_write(pos); // Envio byte a escribir, pos es la posición a partir de la cual quiero leer los siguientes datos
i2c_stop(); // Cierro comunicacion
delay_ms(30); // Espero a que escriba correctamente
}
int eplee(){ // Rutina de lectura I2C
i2c_start();
i2c_write(0xA1);
r=i2c_read();//comienza la lectura.
i2c_stop();
delay_ms(32);
return(r);
}
El caso es que llamo a la rutina eplee() en un bucle for para que lea secuencialmente las posiciones de memoria, y hace una lectura correcta y la siguiente lee 0xFF (lo cual esta mal) una bien otra mal, una bien otra mal.....y asi continuamente,¿sabeis que puede estar pasando?