32u4-based Eeprom and AVR Programmer
Created by D Cooper Dalrymple 2019 - dcdalrymple.com
Licensed under GNU GPL V3.0
Last revision on November 6th, 2019
Parallel EEPROM and ATtiny13A ISP programmer with native USB support using the Atmega32u4 microcontroller. Intended for making homebrew NES & VCS cartridges with easily rewritable EEPROM for prototyping.
Intended for use with Atmel AT28Cxxx ICs, but other pin-compatible chips might work as well.
- Atmel AT28C16 16Kb (2K x 8)
- Atmel AT28C256 256Kb (32K x 8)
Intended for use with Atmel ATtiny13A for writing AVRCIC but other devices should be supported with no modifications or with jumper cables.
- Atmel ATtiny13A
- Atmel ATtiny25/45/85
The software for communicating with the 32u4 is written in Python 2.7 with PySerial and wxPython for cross platform support. With the correct packages, it should work on Linux, Windows, and macOS (currently not tested). You can run this program with the IDLE Python GUI or by running the command
python ./32u4-programmer.py in the root directory of this project.
There are four main panels within the software, EEPROM, ISP, Hex, and Debug:
This page presents all of the options needed to configure the programmer and its serial connection and perform the full device read and write tasks. Currently, the software only supports raw .bin and .hex files for writing the entire device's memory contents.
The ISP software functionality is still in development.
Whenever a hex file is imported manually, read from an EEPROM device, or written to an EEPROM by the programmer, the hex viewer is updated to display all addreses and values of the binary data. It groups addressed data into rows of 8 with a string characterization preview in the last column which is useful for reading rom header data. You cannot currently edit rom data on this page, but this feature may be implemented in the future.
This page gives you the ability to send commands directly to the programmer, specify each parameter with hexadecimal notation, and display the response from the programmer if applicable. This page is mostly useful for testing address and data lines on the programmer or reading and writing small sets of data to verify an eeprom device's functionality.
On all utility pages, the log is visible in the bottom of the software. This will display any informational, warning, error, or success messages in color coordinated fashion. This is useful for monitoring the progress of device programming.
At the moment, hardware development is still in the prototyping phase. You can built your own breadboard prototype by following the Fritzing project wiring diagram with an Adafruit ItsyBitsy 32u4 5V microcontroller and 2 74HC595 ICs, but a more complete, alpha version of the hardware will be developed soon (and possibly distributed) based on the updated schematic. These KiCad project files are located in the
The hardware, firmware, and software for this project is still in active development. Follow this project if you would like to receive future updates or contact me at firstname.lastname@example.org to learn more about how you can contribute.
- EPROM device support (ie 27Cxxx) with Buck Boost circuit and relays
- Standalone operation after being configured by the utility software
- Automatic device hardware configuration for power and address lines
- ATtiny24/44/84 ISP support
- Complete ISP firmware
- Hex file editing and performance improvements
- NES/VCS ROM file parsing
- Global environment settings
- ISP programming
This project is licensed under GNU GPL V3.0 - see the LICENSE file for details.