Eeprom

Buenas, he estado programando un Arduino para que escriba y lea números en una memoria Eeprom. Hasta ahora y como ya he dicho, solo he introducido números, me gustaría saber si hay alguna forma de introducir cadenas de texto en estas memorias. Estoy usando un Arduino Duermilanove y una memoria Eeprom 252LC256, hasta ahora he programado usando la libreria EEPROM.h. Espero haberme explicado bien. Agradeciendo de antemano una respuesta.

con esa libreria lees o escribes la memoria eeprom interna.

la que comentas imagino es I2C, tienes que hacer el protocolo para leer y escribir.

si quieres escrirbir cadenas tienes que hacerlo byte a byte, y al leerlo tambien

la libreria wire.h es la que te hace falta un saludo

Y podría alguien darme una idea general de como se podría programar el arduino para que guarde datos en una memoria Eeprom externa Gracias Actualización Si miramos el código de esta página http://www.arduino.cc/playground/Code/I2CEEPROM Entiendo la gran mayoría del código, entiendo que en el Setup escribe un texto, y luego en el loop lee los bits y los transforma a char. Luego las funciones entiendo que hacen lo siguiente, corriganme si me equivoco, i2c_eeprom_write_byte: escribe un byte que le das en una dirección de memoria concreta de una eeprom concreta. i2c_eeprom_write_page: escribe una cadena de texto o algo que ocupe más de un byte en una direccion de memoria concreta de una eeprom concreta. i2c_eeprom_read_byte: lee una direccion de memoria concreta de una eeprom concreta. void i2c_eeprom_read_buffer: lee una cadena de texto o algo que ocupe más de un byte en una direccion de memoria concreta de una eeprom concreta.

Mi problema, es que no entiendo porque usa para leer la cadena que ha guardado con i2c_eeprom_write_page la funcion i2c_eeprom_read_byte con un while en vez de usar la funcion void i2c_eeprom_read_buffer. Para acabar y siento la longitud del post, como se determinaría el deviceadress de mi eeprom, en el codigo indican que es el 0x50 pero cambia de eeprom a eeprom??

Espero haberme explicado bien y que me puedan contestar.

mirate el datasheet del dispositivo que tienes de memoria para saber bien como funciona

este tipo de memoria se les puede configurar la direccion, tiene 2 o 3 patillas para poner la direccion, segun estén a 0 o 1 ( cero o cinco voltios) tiene una direccion u otra, esto lo puedes ver en el datasheet.

el protocolo para leer o escribir, es primero llamar al dispositivo, entregarle la direccion a partir de la cual quieres leer o escribir, y leer o escribir un número de bytes.

tal como lo hace el codigo que está en esa web lo hace con un solo byte, pero muchas veces, es menos eficiente pero funciona. i2c_eeprom_read_byte(0x50, 0); lee un byte a partir de la direccion 0

i2c_eeprom_write_page(0x50, 0, (byte *)somedata, sizeof(somedata)); escribe a partir de la direccion la cadena completa byte a byte

Muchísimas gracias ahora me planteas una duda,
Creo haber entendido que aunque se puede leer de dos maneras, la que mejor función (no la más eficiente) es i2c_eeprom_read_byte.
Luego, si quisiésemos guardar una cadena de texto usaríamos la función i2c_eeprom_write_page mientras que si quisiésemos grabar un único número entre o y 255 podríamos usar i2c_eeprom_write_byte
Es así???
Espero no haber molestado mucho y gracias otra vez tanto por las respuestas como por la velocidad de las mismas

Hola buenos dias, primero hay que definir bien el protocolo que estas usando segun tu memoria eeprom externa.

la serie 24cxxx son de protocolo I2C. la serie 25cxxx son de protocolo SPI la serie 93Cxx son de protocolo MICROWARE

ya definido el protocolo de tu eeprom debes bajar el datasheets y entender los proceso de lectura y escritura en el caso de los spi y microware tiene que tener mucho encuenta los OPCODE para el proceso que deseeshacer con dicha eeprom que estes manejando y en las I2C es de mucha importancia saber su paginado (bloque).

Saludos y cualquier cosa estamos en contacto.