

Eeprom programmer
A EEPROM Programmer for my z80 stuff. Supported EEPROMS: 28C64, 28C256
- Size
- 80 × 80 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 23
- Nets
- 55
- Pads
- 144
- Tracks, vias
- 372, 30
- Pours
- 1
- Routed
- Yes
- KiCad
- KiCad 5 (file 20171130)
- Created
- 5 Mar 2021
- Updated
- 13 Jul 2021
Overview
Eeprom programmer is an open-source printed circuit board by jkreucher, from the jkreucher/eeprom-programmer repository on GitHub, published under the MIT licence. It is a 2-layer board of 80 × 80 mm with 23 parts on 55 nets, routed with 372 tracks and 30 vias.
It is built around the ATMEGA8-16PU and 74HC595. Its parts include 5 capacitors, 5 ICs, 3 resistors, 2 diodes and 2 connectors. It belongs with the interfaces and adapters and retro computing and games boards and the AVR (ATmega, ATtiny) boards of this library.
Main components
2ATMEGA8-16PU
DIP-28-40℃~+85℃ 10bit 16MHz 1KB 23 4.5V~5.5V 512Byte 8 Bit 8KB AVR Built-in FLASH DIP-28 Microcontrollers (MCU/MPU/SOC) ROHSMicrochip TechnologyMicrocontrollers (MCU/MPU/SOC)74HC595
SOP-16-40℃~+85℃ 1 100ns@5V,50pF 10MHz 2V~6V 74HC 8 Serial-to-Serial or Parallel Tri-State SOP-16 Shift Registers ROHSGRShift Registers
README
README.mdSimple EEPROM Programmer
Copyright 2021 Jannik Kreucher

Table of Contents
Project
I created this programmer for my personal Z80 project. Since commerical programmers are fairly expensive I created my own simple programmer. It is nothing fancy and just supports a single family of EEPROMs. It does not have support for a higher programming voltage and is limited for +5V EEPROMs.
This simple programmer supports following EEPROMs:
Dependencies
To compile the code you need to have following tools installed:
- avr-gcc (with avr-libs)
- avrdude
- uisp
The programmer flash tool uses Python3 and pySerial:
- python3
- python3-serial
The Makefile contains a command to install everything needed:
cd code
sudo make toolsMake
First compile the ATmega code. Execute following in the project root folder:
cd code
makeNow flash the compiled code to the programmer. Connect the ISP-Programmer and execute:
make fuses
make uploadI am using a USBasp Programmer. Note: Notch on ISP-Programmer must be facing the ATmega8 chip (U1) while flashing firmware.
Flash EEPROM
Note: Firmware needs to be flashed beforehand !
To flash your binary file to the EEPROM inserted type:
cd code
chmod +x eeprom.py
./eeprom.py -e -o -p /dev/ttyACM0 -b 115200 -w <binaryfile.bin>For more information:
./eeprom.py -hSchematic

Micro Processor
The micro processor used in this project is the popular ATmega8 (U1), a cheaper version of the ATmega328 used in the Arduino Uno. It handles everything: the serial communication, address bus and the data bus. U2 (MCP2221) handles the USB to UART conversion so no external ftdi cable is needed. The supply voltage is conveniantly given by the USB port also. Because data bus of the EEPROM is bidirectional it is directly connected to the processor. The micro processor needs to handle setting the bus as input or output. See eeprom.c for everything I/O related. The UART is handled in uart.c. And the communication protocol is defined in parser.c and in main.c.
Shift Registers
The shift registers (U3, U4) are utilized to expand the IO of the processor. Just 3 bits are needed to set the address bus to the target address. Since the address bus is only one way no data needs to be read from the address bus thus making shift registers the obvious choice for this situation. See eeprom.c: addrbus_set() for how the data is latched.
EEPROM
The EEPROM uses a parallel interface for communication. The address bus (A0-A14) is a parallel input which sets the memory location to read or write. The control lines ~WE and ~OE (active low) tell the EEPROM to read or write from/to the memory. The data is read from or sent out the parallel data bus (D0-D7) depending on the state of the control lines. Some EEPROMs have Write-Protect enabled. A algorithm (see datasheet) is implemented to deactivate write protection. See eeprom.c: eeprom_disable_protect() for how this works.
PCB
Note: The pcb is designed so that the top layer represents jumpers. The vias are large enough to stick a wire through.
For the schematic and pcb layout I used KiCad, a very awsome open source EDA. The clearances and spaces are designed for diy home etching so nothing really fancy. See eeprom_programmer_bom.pdf for the bill of materials. At the moment the whole project would cost you around 26€ plus a weekend of time.

Enclosure
The very simple, easy and fast to print enclosure consists of two parts which sandwhich the pcb. Needed are just 4x M3,5x12mm wood screws to assemble the enclosure.

License
MIT Jannik Kreucher
Parts
23| Qty | Value | Footprint | References |
|---|---|---|---|
| 3 | 100nF | Capacitor_THT:C_Disc_D3.0mm_W2.0mm_P2.50mm | C3, C4, C5 |
| 2 | 220 | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | R2, R3 |
| 2 | 22pF | Capacitor_THT:C_Disc_D3.0mm_W2.0mm_P2.50mm | C1, C2 |
| 2 | 74HC595 | Package_DIP:DIP-16_W7.62mm_LongPads | U3, U4 |
| 2 | LED | LED_THT:LED_D5.0mm | D1, D2 |
| 1 | 10k | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | R1 |
| 1 | 28C256 | zif:DIP-28_W15.24mm_ZIF_LongPads | U5 |
| 1 | 7,3728MHz | Crystal:Crystal_HC49-U_Vertical | Y1 |
| 1 | ATmega8-16PU | Package_DIP:DIP-28_W7.62mm_LongPads | U1 |
| 1 | AVR ISP | Connector_PinHeader_2.54mm:PinHeader_2x03_P2.54mm_Vertical | J1 |
| 1 | MCP2221AxP | Package_DIP:DIP-14_W7.62mm_LongPads | U2 |
| 1 | Reset | Button_Switch_THT:SW_PUSH_6mm | SW1 |
| 1 | USB_B | Connector_USB:USB_B_Lumberg_2411_02_Horizontal | J2 |
The 19 most common of 23 parts.
Questions
How big is the Eeprom programmer PCB?
It measures 80 × 80 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Eeprom programmer use?
23 parts, built around the ATMEGA8-16PU and 74HC595. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the Eeprom programmer KiCad files?
From the jkreucher/eeprom-programmer repository on GitHub, at the commit this page was made from: the board is eeprom_programmer.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.
Can I use the Eeprom programmer design in my own project?
Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).
Similar boards
- 2 layers68.5 × 181 mm

- 2 layers54.6 × 71.8 mm

- 2 layers77.5 × 34.3 mm

Lan64usb
ThKattanek/lan64usb
Diese Hard- und Software ermöglicht den Transfer von Programmen vom PC zum Commodore 64 (C64).
19 parts3GPL-2.0 - 2 layers

- 2 layers124.5 × 99.1 mm

Vetrnik power
ondras12345/vetrnik
Electronics for heating water with power from a 2 kW wind turbine
138 parts - 2 layers175.5 × 94.5 mm

- 2 layers81.3 × 62.2 mm

- 2 layers88.6 × 27.6 mm

Riscduino ATMEGA Adpater Rev1.0
dineshannayya/riscduino_board
Riscduino PCB Board documentation
71 parts2