Erik van Zijst's EEPROM Blower Shield Brings Easy-Read Non-Volatile Storage to Breadboard Projects

While expensive compared to modern serial equivalents, classic EEPROMs have a major benefit: ease of reading without a microcontroller.

Gareth Halfacree
7 months agoHardware 101

Erik van Zijst has released an Arduino shield add-on designed to read and write to electrically erasable programmable read-only memory (EEPROM) chips — a tool inspired by his upcoming projects which need breadboard-compatible non-volatile memory.

A common sight on vintage hardware, EEPROMs are surprisingly chunky DIP-packaged chips which upgraded the older EPROM designs in being erasable in-circuit using nothing more than an electrical signal — contrasted with EPROMS, which needed the chip inside to be exposed to strong ultra-violet light from a dedicated eraser through a quartz window in the package. Both, of course, were an improvement over PROMs, write-once read-many devices which needed to be discarded if any upgrades or modifications were required.

Today, EEPROMs — and EPROMs — are rarer, for a good reason. "These chips tend to be much larger and expensive than their modern serial counterparts that have largely replaced them," van Zijst explains - but there was a good reason to select the vintage designs for his projects. "In contrast to most newer EEPROMs they have parallel input and output pins for address and data, making it trivial to read from."

The act of writing, or 'blowing', data to an EEPROM requires a dedicated programming device, which are relatively specialised machines - and, thus, expensive. Van Zijst's solution: a shield add-on for the Arduino Uno which includes a quick-change zero insertion force (ZIF) socket compatible with the Microchip AT28C256 EEPROMs chosen for the project.

Using two daisy-chained shift registers to expand the Arduino's input/output capabilities, van Zijst ended up with a programmer boasting a five-command protocol: read and dump, which read a single address or the entire contents of the EEPROM respectively; write and load, which write a single byte or a stream of binary data respectively; and reset, which resets the Arduino in case of error. The client software, written in Python, can be used as a terminal application or executed with a REPL-like interactive interface — "handy to peek and poke at specific addresses," van Zijst explains.

A full write-up of the project is available on van Zijst's GitHub page site, while the PCB design files and software can be found on his GitHub repository under the Apache Licence v2.0.

Gareth Halfacree
Freelance journalist, technical author, hacker, tinkerer, erstwhile sysadmin. For hire:
Related articles
Sponsored articles
Related articles