UNO Flash Programmer

Here's the story about the Arduino UNO based Flash EEPROM Programmer for the ATMEL AT28C256 32K EEPROM.

I was getting tired of dragging out the UV Lamp (EPROM eraser) and waiting for the chips to be erased while doing software updates to the HD6303YCP Mini Computer Board.   So I searched ebay for a 32K 28pin flash chip.   I found the AT28C256 with practically the same pinout as my 27C256 EPROM.   I was able to get 5 of these for a little over $7 so I ordered some. (this turned out to be a minor mistake, but that’s another story) So with a slight modification to the HD6303YCP board I can replace the 27C256 32K EPROM with one of these flash memory chips. Pop it out and immediately reprogram it then pop it back in. No waiting for UV erase.

Now I needed a programmer…..

Borrowing most of the design from my UNO EPROM Programmer I built one in a couple of evenings.
The design is MUCH simpler since everything runs on 5V so the whole thing can be driven from the USB power.

The Flash Programmer can use the same iHex upload and download utilities as the EPROM Programmer and has all menu options of the other device as well as a few new ones. 

A few small problems...
My first problem was getting my datasheets mixed up. (never a good thing)
I got the datasheet for the AT29C256 which is ALMOST identical except the  WR and A14 signals are on different pins.  (had I actually ordered this chip instead, no modification of the HD6303YCP board would have been necessary as it would have just plugged in directly replacing the EPROM)

So I scratched my head for many hours wondering why it would not read or write data from the chip until I eventually discovered my mistake.  A quick swap of the 2 wires in question and finally I could read from the device but it still wouldn’t program.

Apparently while trying a bunch of things to solve my first problem I managed to set the devices Software Write Protection.  It took me another evening to finally stumble on that
(since the datasheet states the chips are shipped with data protection turned off it was the last thing I tried)
Then It was just a matter of tweaking the timing on some of the write routines and it was working nicely.

If you wisely decide to build one of these for the AT29C256 instead it’s simply a matter of swapping those 2 signals on the chip.  The software should work either way.

About the Arduino software:
Here's what comes up on the UNO's serial monitor when it's connected 

(NOTE: close the serial monitor before using the PC application)
*Options B, Q, A, and W are just to help debug any hardware issues

  ** AT28C256 Flash Programmer Main Menu v1.0  **

  B  Blink LED                                   

  d  Dump 16 Bytes

  D  Dump 256 Bytes

  p  Program 1 Byte

  P  Program 16 Bytes

  J  Disable Software Protect

  Q  Toggle Control Signals

  A  Write 1 byte with pauses

  W  Write 16 bytes (fixed set of data)

  I  Program Intel Hex Record(Interactive Mode)

  :  Program Intel Hex Record

  M  Re-Display Menu

Lowercase "d" will prompt for an address and dump 16 bytes (the uppercase "D" command outputs 256 byte in the same format) :

 Enter Start Address (In Hex x0000 - xFFFF):8100
8100  08 DF 46 7E 80 F5 7E 81-D5 81 4F 26 12 BD 84 BA     ..F.......O&....

 Both of the programming options ("p" or "P") will also prompt for a starting address and allow you to enter a single or 16 consecutive hex values that will be programmed to the EPROM.

The ":" command is really not intended for humans to use but you could type in an iHEX record to test the function.

It appears I've omitted the menu option for the "Send an iHEX Record" the function exists but also not really for humans to use.

Once again , the source code is nicely commented so it should be easy to modify.

Some more photos:

The topside

The bottom (ugh not pretty)

Update: 4/2/2021

A generous friend designed a super nice PCB version of the Uno Flash Programmer shield and was kind enough to send me one. Here's a couple of photos..

Update 01/29/2023
This project was followed by the Arduino Mega Flash Programmer project

About the attachments: (download links are below)

UnoFlashProgrammer_01.pdf      This is the schematic in PDF format.

FlashProgrammer_01.ino      Here's the source code to run on the UNO. (plenty of comments so it's easy to follow)

Links for EPprogmr_PCSide_Program.zip  and   EPsave_PCSide_Program.zip   

can be found here: EPROM Programmer