Arduino EPROM Programmer Shield

12/17/15

Here's some basic information on the Arduino UNO based EPROM Programmer.

Built as a shield for the UNO, the programmer has very few components.

The 32 pin socket is for a 74C4001  512kx8 EPROM but it only supports programming the 1st 64k.

The configuration makes it easy to build simple plug in adapters to program smaller EPROMS.

 Schematic and code attached below...

I had built an EPROM programmer for a previous project using an Atmel ATMega32 microcontroller however, I thought that a lot of  folks might not have access to an ATMega32 but many will have an UNO lying around. (this could easily be adapted to other Arduino boards as well) 

I wanted something compact so it could be stashed away easily since it's not something I'd use often.

I had also hoped it would persuade someone else to build the HD6303 computer board.

If you're planning on building this here's a few things to keep in mind:

1.  Though not shown, you'll also need some kind of power supply that will supply at least 14vdc or more.

     The typical (unregulated) 9v "Wall-Wart" will actually provide just about 14v but look for 12v one, it will most likely do the job

Edit:  I recently came across a way to configure a  MAX 1683 voltage doubler as a tripler which would provide almost 15v without the need for an external power supply (untested but worth a try) 

     You'll notice I've used a separate barrel jack for the Programmer power supply.  That's because I like to unplug the 

     programming supply when I insert and remove the EPROMs. This insures that a bit will not get randomly programmed.

     Another option might be to use the UNO's barrel jack and pull the programming voltage from the VIN pin.

     Add a jumper or a switch to disable the programmer for chip changes. 

     Although not shown on the schematic I added a jumper to supply VCC to the EPROM from the UNO's 5V pin.

     This is handy if you just want to read an EPROM without using the external power supply.

2.  Once you've programmed an EPROM it's a sure bet you'll also want to erase one.  For that you'll need a U.V. lamp.

        Don't be tempted to try using a UV LED it's just not quite the correct wavelength.

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)

** EPROM Programmer Main Menu v1.3  **

d Dump 16 Bytes

D Dump 256 Bytes

p Program 1 Byte

P Program 16 Bytes

Program Intel Hex Record

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. The PC side companion program will invoke this command when sending over intel hex file records.

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. (used by the EPSave PC side program)

The source code is nicely commented so it should be easy to modify.

I think a clever person could adapt this to program lots of different devices by simply building an adapter that plugs into the EPROM socket and modifying the code with a different programming algorithm. 

There's 3 more UNO I/O pins (A3-A5) yet unused in this design so there's some potential there too.

This project was followed by the UNO Flash Programmer and  Arduino MEGA Flash Programmer.

Some more photos:  Click on the images to see a larger size.

With adapter for a smaller EPROM

The bottom (ugh not pretty)

Download Link Details:

EPprogmr_PCSide_Program.zip        This is the source and .EXE for the PC command line utility used to transfer a iHEX file
                                                                                  from the PC to the EPROM (not super fast but it gets the job done)

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

EPsave_PCSide_Program.zip             This is the source and .EXE for the PC command line utility used to transfer a range of data
                                                                              from the EPROM to an iHEX file on the PC

UnoEPROM_Programmer_01.pdf      This is the schematic in PDF format.

 An earlier version of this project:   ATMega32 based EPROM Programmer