Skip to the content
PCBKitNew board
2 layers80 × 80 mmEeprom programmer, the printed circuit board in 3D

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

2

README

README.md

Simple EEPROM Programmer

Copyright 2021 Jannik Kreucher

PCB

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:

text
cd code
sudo make tools

Make

First compile the ATmega code. Execute following in the project root folder:

text
cd code
make

Now flash the compiled code to the programmer. Connect the ISP-Programmer and execute:

text
make fuses
make upload

I 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:

text
cd code
chmod +x eeprom.py
./eeprom.py -e -o -p /dev/ttyACM0 -b 115200 -w <binaryfile.bin>

For more information:

text
./eeprom.py -h

Schematic

Schematic

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.

PCB

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.

Enclosure

License

MIT Jannik Kreucher

Parts

23
QtyValueFootprintReferences
3100nFCapacitor_THT:C_Disc_D3.0mm_W2.0mm_P2.50mmC3, C4, C5
2220Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR2, R3
222pFCapacitor_THT:C_Disc_D3.0mm_W2.0mm_P2.50mmC1, C2
274HC595Package_DIP:DIP-16_W7.62mm_LongPadsU3, U4
2LEDLED_THT:LED_D5.0mmD1, D2
110kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR1
128C256zif:DIP-28_W15.24mm_ZIF_LongPadsU5
17,3728MHzCrystal:Crystal_HC49-U_VerticalY1
1ATmega8-16PUPackage_DIP:DIP-28_W7.62mm_LongPadsU1
1AVR ISPConnector_PinHeader_2.54mm:PinHeader_2x03_P2.54mm_VerticalJ1
1MCP2221AxPPackage_DIP:DIP-14_W7.62mm_LongPadsU2
1ResetButton_Switch_THT:SW_PUSH_6mmSW1
1USB_BConnector_USB:USB_B_Lumberg_2411_02_HorizontalJ2

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 mmNixie2, the printed circuit board in 3D

    Nixie2

    cfallin/nixie2

    Circuit design and firmware for a GPS-synchronized Nixie-tube clock

    51 parts1
  • 2 layers54.6 × 71.8 mmThermostat, the printed circuit board in 3D

    Thermostat

    protaskin/AVRThermostat

    A programmable thermostat on ATmega8A and DS18B20.

    31 parts7MIT
  • 2 layers77.5 × 34.3 mmLan64usb, the printed circuit board in 3D

    Lan64usb

    ThKattanek/lan64usb

    Diese Hard- und Software ermöglicht den Transfer von Programmen vom PC zum Commodore 64 (C64).

    19 parts3GPL-2.0
  • 2 layersAvrisp, the printed circuit board in 3D

    Avrisp

    ildus/avrisp

    schematic and pcb for http://www.fischl.de/usbasp/

    25 parts1
  • 2 layers124.5 × 99.1 mmVetrnik power, the printed circuit board in 3D

    Vetrnik power

    ondras12345/vetrnik

    Electronics for heating water with power from a 2 kW wind turbine

    138 parts
  • 2 layers175.5 × 94.5 mmV2 atmega8 encoder, the printed circuit board in 3D

    V2 atmega8 encoder

    schmolmo/distel-hardware

    Multi-Player Controller for Distel Lang

    29 parts
  • 2 layers81.3 × 62.2 mmStep linear, the printed circuit board in 3D

    Step linear

    dzavalishin/hardware

    Misc smart house hardware

    82 parts3