Programador de EEPROM 28Cxx (con Arduino)

Navegando por internet encontre este programador de Eeprom para la serie 28Cxx con Arduino , los estudiantes por cuestiones de practica suelen armarse un programador basico manual en protoboard cuando se trata de un ejercicio que les encarga el profesor para grabar una decena de bytes y lo muestren en algun display o algun secuencial, entonces les quedaria casi como el video de la chica electronica del video de abajo , Yo tambien en su momento me puse a programar manualmente y si que es una operacion al comienzo entretenida pero despues se vuelve tediosa (despues me ayude con el puerto paralelo), pero con ayuda de un circuito controlado por un Arduino ya se aligeraria la cosa , que seria mucho mas practico que mover switch cuando se trata de mas volumen de bytes a grabar, ademas se puede aliviar por el momento comprar algun programador comercial algo costoso como el TL866.


El circuito programador alternativo a uno comercial podria ser este del autor Mario Keller llamado MEEPROMMER, para lo cual se requiere de

* Placa compatible Arduino (Uno o Nano son las que el autor ha probado y funcionan)
* 2 x 74HC595 Serial-Parallel Shift Registers
* 1 zocalo ZIF de 28 pines
* La EEPROM en cuestión que queremos programar. Recordar que este programador sólo sirve para las EEPROM de la familia AT28Cxxx (sólo hay tres modelos: AT28C64, AT28C128, AT28C256)

Y el diagrama del circuito es este, en el circuito adjunto esta el codigo firmware para cargar al arduino y tambien un programa con extension JAR llamado que debe funcionar teniendo instalado el java en su PC

prototype_schema.jpg

Segun se describe a travez de esa aplicacion MEEPROMMER.jar que esta en la carpeta SimpleJBurn/BIN en JAva se puede realizar las siguientes tareas

- Load ROM image from disk (up to 32k)
- Read data from EEPROM
- Save EEPROM data to disk
- Burn image data to EEPROM
- set an offset for burning data
- compare image data and EEPROM data
- clear EEPROM to 0x00 bytes

y les adjunto una explicacion tomada de esta pagina Programando EEprom

Al comunicarse mediante protocolo serie con la placa Arduino se puede usar el monitor serie que ya trae el IDE de arduino. Este monitor se encuentra en Herramientas/Monitor Serial. En las siguientes figuras puede verse unos ejemplos de uso.

Leer desde la dirección $0000, 16 bytes (0010 en hexadecimal) en adelante y mostrar el contenido de la memoria en hexadecimal

R, desde, tamaño: leer y mostrar memoria en hexadecimal

R, desde, tamaño: leer y mostrar memoria en hexadecimal


Leer desde la direccción $0000, 16 bytes y mostrar el contenido en ASCII

r,desde,tamaño: leer memoria y mostrar caracteres en ASCII

r,desde,tamaño: leer memoria y mostrar caracteres en ASCII
Sólo se ven los caracteres correspondientes al código hexadecimal $EA, ya que el código ASCII $00 no es un caracter imprimible.

Mostrar la versión del firmware

V: Mostrar versión del firmware
V: Mostrar versión del firmware


Escribir desde la direccción $0000, 1 byte:

w,desde,hasta,tamaño: escribir en memoria

w,desde,hasta,tamaño: escribir en memoria
si tecleamos “a” y pulsamos el botón Enviar se escribe el código ASCII de la “a” minúscula en la dirección 0000 que hemos indicado antes:

MEEPROMMER_wa
Si leemos de nuevo la memoria vemos que efectivamente se ha modificado el primer byte de la memoria (R,0000,0010):

Comprobando que la ROM se ha escrito bien

Comprobando que la ROM se ha escrito bien


Y si lo mostramos en ASCII (r,0000,0010), vemos la “a” en el primer byte:

Comprobando memoria (ASCII)
Comprobando memoria (ASCII)
Varios detalles muy importantes a tener en cuenta o si no nada de esto funcionará bien:

Al ser una comunicación serie es muy importante establecer el separador de línea y velocidad de transmisión correctas. En la figura se muestran los valores correctos:
Es muy importante seleccionar el fin de línea y velocidad de la transmisión

Es muy importante seleccionar el fin de línea y velocidad de la transmisión

Bueno espero que les pueda servir para sus proyectos donde implique el uso de memorias EEprom de la serie 28Cxx
Continua la segunda parte de instrucciones para el funcionamiento del programador EEprom con la aplicacion JAR, este material es tomado de la pagina al que le pertenecen los creditos de ese tutorial Programando Eeprom con aplicacion que data del 2014


En el post anterior expliqué cómo usar el Serial Monitor del IDE Arduino para leer y escribir en la memoria ROM de una forma bastante rudimentaria. En este post voy a explicar el uso del programa creado por Mario Keller llamado SimpleJBurn.
Esta utilidad está escrita en Java, por tanto necesitaremos tener el entorno Java instalado previamente. Podemos descargarlo desde la página oficial de Oracle. Yo tengo instalada la versión de Java 7u45 de 32 bits. Es posible que la aplicación funcione en otras versiones (incluso en 64 bits), pero como no lo he probado daré las instrucciones para descargar el mismo entorno que tengo yo.
El siguiente enlace abre la página de Oracle de descarga de todas las versiones de Java 7. Para instalar la versión 7 u45 de 32 bits deberemos bajar un poco en la página hasta que encontremos la entrada Java SE Runtime Environment 7u45. En esa entrada descargamos el archivo jre-7u45-windows-i586.exe (Windows x86 Offline), acordándonos de aceptar la licencia marcando Accept License Agreement:
Java_7_u45 32 bits

No voy a explicar el proceso de instalación de Java, pues se instala como cualquier aplicación Windows.
El siguiente paso necesario es instalar la librería RxTx Java. Yo me he desargado esta librería desde esta página. Navegando hacia abajo encontramos la sección Downloads. Si tenemos una versión de Java de 32 bits (como es mi caso) deberemos descargar el archivo correspondiente de 32 bits. Para Windows descargaremos el archivo bajo el enlace Windows-x86. Esto descargará el archivo
mfz-rxtx-2.2-20081207-win-x86.zip
Descomprimimos este archivo y encontraremos tres ficheros que hay que copiar a las siguientes carpetas de la instalación de Java:
Copy RXTXcomm.jar ---> <JAVA_HOME>\jre7\lib\ext
Copy rxtxSerial.dll ---> <JAVA_HOME>\jre7\bin
Copy rxtxParallel.dll ---> <JAVA_HOME>\jre7\bin

Donde <JAVA_HOME> es el directorio donde está instalado Java. En mi caso, por ejemplo, es
C:\Program Files (x86)\Java
Ejecutando SimpleJBurn
Una vez tenemos Java instalado y la librería RxTx ya está todo listo para ejecutar el programa SimpleJBurn. Pero antes de nada conectamos la placa Arduino mediante el cable USB. Una vez tenemos la placa Arduino conectada ya podemos ejecutar SimpleJBurn haciendo doble click en
<MEEPROMMER_MASTER>\SimpleJBurn\bin\MEEPROMMER.jar

Si todo ha ido bien debería abrirse la aplicación y mostrar algo como esto:
SimpleJBurn
En resumen, los comandos que más uso yo son:
  • Load Image: Abre un fichero binario para posteriormente grabarlo a la ROM.
  • Read EEPROM: Lee el contenido de la EEPROM completa
  • Write EEPROM: Vuelca el contenido de un fichero (abierto previamente con Load Image) a la EEPROM
  • EEPROM Type: Selecciona el modelo de EEPROM que queremos grabar/leer. En mi caso selecciono 28C256, que corresponde a la de 32Kbytes.
  • Offset: Permite empezar a escribir a partir de una posición concreta de la memoria (en múltiplos de 1K). Esto es muy útil, pues es frecuente que un programa comience en una dirección diferente a la $0000
  • Serial: Importantísimo, selecciona el puerto COM al que está conectada la placa Arduino. En mi caso es el puerto COM4.
  • Show Image: Muestra en formato hexadecimal el contenido del fichero cargado. Muy útil para comprobar que el fichero abierto contiene la información que esperamos
  • Show Data: Muestra en formato hexadecimal el contenido de la EEPROM leída previamente con el comando Read EEPROM.

A continuación voy a explicar la secuencia de pasos para volcar un programa muy simple a la ROM.
  1. Conectamos la placa Arduino
  2. Ejecutamos el programa SimpleJBurn y seleccionamos el puerto al que está conectado la placa Arduino. Es importante conectar primero la placa para que el programa pueda detectar el puerto.
  3. Yo siempre compruebo que la comunicación ha tenido éxito pulsado el botón Version. El comando muestra la versión del programa SimpleJBurn, pero si no se puede conectar con MEEPROMMER muestra a continuación un mensaje de error.
    SimpleJBurn Connected
  4. Pulsamos Load Imagepara abrir el fichero a escribir en la EEPROM

    Load Image: Abrimos el fichero a volcar
    Load Image: Abrimos el fichero a volcar
  5. Pulsamos Show Imagepara mostrar el contenido de la imagen y así comprobar que los datos son los esperados
    Show Image: Muestra el contenido de la imagen
    Show Image: Muestra el contenido de la imagen
    La imagen contiene 1K de datos. El programa comienza en la dirección $00F0 y acaba en la dirección $00F9. El resto lo he rellenado con $FF.
  6. Nos aseguramos de seleccionar el modelo de la EEPROM correcta (28C256 en mi caso)
  7. Pulsamos en Write EEPROM. Si todo ha ido bien indicará cuántos bytes ha escrito en ROM:

    Write Image: Imagen escrita en ROM con exito
    Write Image: Imagen escrita en ROM con exito
  8. Vamos a comprobar que los datos se han escrito bien. Pulsamos primero en Read EEPROM. Si todo ha ido bien, al cabo de unos segundos mostrará que ha leído 32768 bytes (toda la memoria) y el tiempo transcurrido

    Read EEPROM: Lee todo el contenido de la EEPROM
    Read EEPROM: Lee todo el contenido de la EEPROM
  9. Y finalmente pulsamos en Show Datapara mostrar el contenido de la EEPROM. Mostrará los 32768 bytes, que es mucha información. Como el programa estaba en la dirección $00f0 habrá que mover la barra de desplazamiento hacia arriba hasta encontrar esa dirección:

    Comprobando que los datos se han escrito bien
    Comprobando que los datos se han escrito bien

¡Y ahí está nuestro primer programa escrito con éxito en nuestra ROM!
 

Adjuntos

  • MEEPROMMER-master.zip
    511.6 KB · Visitas: 2
Última edición:
Arriba