TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: jezus en 08 de Septiembre de 2010, 07:10:27

Título: Problemas al hacer una lectura secuencial de una EEPROM por i2c
Publicado por: jezus en 08 de Septiembre de 2010, 07:10:27
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?
Título: Re: Problemas al hacer una lectura secuencial de una EEPROM por i2c
Publicado por: alcubo01 en 08 de Septiembre de 2010, 07:34:45


 Prueba a enviarle ACK despues de cada lectura.
Título: Re: Problemas al hacer una lectura secuencial de una EEPROM por i2c
Publicado por: jezus en 08 de Septiembre de 2010, 09:01:16


 Prueba a enviarle ACK despues de cada lectura.

Perfecto!muchas gracias
Título: Re: Problemas al hacer una lectura secuencial de una EEPROM por i2c
Publicado por: Suky en 08 de Septiembre de 2010, 10:04:20
Si lees una sola vez debes colocar i2c_read(0);


Saludos!