Página principal
Programación
EEPROM 24cXX
24c01-24c02-24c04-24c08-24c16
con
Arduino y Gambas
xsetaseta@gmail.com
En el anterior montaje (programación EEPROM 24c02 24c01)
había realizado un grabador de memorias 24c01 y 24c02 de 128bytes y
256 bytes. Estos modelos tienen un direccionamiento de 1byte, 256
posiciones de memoria. El bus I2C se había diseñado para en
principio para direccionar 256 tipos de dispositivos
(Circuitos integrados), y era mas que suficiente. Pero que ocurrió
que se utilizó para memorias EEPROM, y las memorias crecieron en
capacidad, y ahora es fácil encontrar memoria de hasta 8Mbytes.
Para memorias de entre 256 bytes a 2Kbytes, quitaron los ping de
selección de chip E0,E1,E2 para internamente utilizarlos como
direccionamiento.
En memorias 24c32 al 24c256, 4Kbytes a 64Kbytes, se mandan dos bytes
para sacar la dirección de la memoria. Cuando me lleguen estos
modelos de chip actualizaré el programa. Recomiendo leer las hojas
de características de los chip para entender su
funcionamiento.
Cuando empece a programar los chip 24c04-24c08-24c16 desde arduino
no encontré ningún ejemplo, y el que vi resulto que direccionaba mal
la memoria, mandando 2Bytes.
Tampoco entendía que en la librería Wire de arduino ,
asignaran para las memorias la dirección 0x50, #define
EEPROM_I2C_ADDRESS 0x50 ,cuando en realidad era
0xA0 (0b10100000). Después de investigar, descubrí que
desplazaba 1 bit a la derecha para eliminar el bit de escritura,
claro está que luego la librería Wire, vuelve a desplazar a
la izquierda para volver a colocar el verdadero valor.
Ahora entendido como se debía utilizar la EEPROM_I2C_ADDRESS como
parte de direccionamiento de la memoria, se modifica la programación
del arduino. Utilizo los bits A8,A9,A10 de la dirección de memoria,
para colocarlos en el Device Select Code en la posición
b1,b2,b3. deviceaddress=deviceaddress | (eeaddress
>> 8) ;
Conexionado de la memoria con el arduino nano
para memorias 24c01-24c02-24c04-24c08-24c16 .
Circuito montado.
Adaptando los modelos SO8 Pin Connections
Programa en gambas.
El programa en gambas (VB para Linux) es sencillo, pero tiene un
poco de todo, lee, graba,compara, guarda, restaura, y un pequeño
editor.
Para evitar ciclos de escritura, conviene leer la memoria a
programar, y cuando se graban datos en dicha memoria se compara el
dato que hay en esa posición de memoria y el dato que va se va ha
escribir, sin son el mismo no graba nada. Esto evita muchas
grabaciones innecesarias y hace grabaciones rápidas. A esto llamo
WriteComparación.
Para empezar el programa debemos seleccionar el puerto, normalmente
/dev/ttyUSB0 , y pulsamos start . Si
todo nos va bien nos saldrá EMPIEZA 24C 01/02 .
Insertada la memoria, leemos sus datos con el botón Read,
se visualizaran automáticamente. Si queremos cambiar el modo de
visualización seleccionamos DEc , Char, Hex .
Si queremos editar algún dato, pulsamos sobre la pantalla de los
datos y mediante los cursores seleccionamos la dirección que
queramos modificar. Ahora introducimos el valor en la casilla de Valor
y pulsamos Enter, automáticamente cambia el dato e
incrementamos la posición de memoria.
Ahora podemos grabar los datos en memoria o guardarlos en un
fichero.
Espero que le sirva a alguien este programa.
Mi intención es actualizar el programa para grabar todo tipo de
memorias
Programa
Saludos.
Juan Galaz