The EEPROM Programmer’s serial protocol was migrated from JSON-RPC (with ArduinoJson dependency) to a lightweight binary protocol. On Arduino DUE + AT28C64: reads are 4.4x faster (6.96s to 1.58s), full write cycles are 2.7x faster (33.74s to 12.70s), and flash usage dropped 31% (16KB saved). The protocol uses length-prefixed frames with CRC-16/CCITT integrity checking, a state machine receiver on the firmware side, and blocking serial reads on the Python side. ArduinoJson — the only external firmware dependency — was eliminated entirely.
The EEPROM Programmer now supports all available AT28C family chips: AT28C04, AT28C16, AT28C64, and AT28C256. Chip-specific features like RDY/BUSY polling and page-write mode enable major speedups on Arduino DUE but are not viable on MEGA. Performance measurements and wiring details are provided for each chip.
Page-write support in the AT28C256 can significantly speed up programming, but it depends on tight timing. The Arduino MEGA is too slow to use this feature reliably, while faster platforms like the Arduino DUE make it practical and stable.
Both DATA and RDY/!BUSY polling methods cut EEPROM write wait time by roughly threefold compared to fixed delays. They deliver similar performance and are simple to implement on Arduino. The limiting factor is the Arduino’s processing speed, not the AT28Cxx IC.
When an Arduino establishes a serial connection, the board resets and produces transient voltage spikes on the EEPROM pins. These fluctuations can reach up to 2 V, enough to toggle the !WE pin and initiate unintended write operations. Tying the !WE pin to VCC during read mode prevents data corruption.
A JSON-RPC API is implemented for the Arduino EEPROM programmer, with clean separation between protocol handling and application logic. The Arduino firmware exposes basic read/write primitives, while a Python CLI handles the business logic. Validation against the XGecu reference programmer confirms identical read and write behavior.
A reusable JSON-RPC library for Arduino Serial communication. Memory limits, encoding overhead, and debugging requirements shape the protocol design. Encapsulating JSON-RPC logic in a library simplifies development and improves maintainability despite higher resource costs.
Misconfigured or uninitialized Arduino pins generate unstable voltage levels that vary with frequency and signal state. During board reset, all pins enter a floating state, producing undefined signals that can affect connected devices. This can lead to data corruption or unpredictable behavior in chips such as EEPROMs or DACs.
The EEPROM Programmer initially returned corrupted data. I tested wiring, bit ordering, and bus isolation, suspecting noise on the data lines. Oscilloscope traces suggested interference, but the root cause was software, several Arduino address pins were never initialized. These floating pins produced unstable signals that mimicked noise. After proper initialization, the API produced stable results identical to a reference programmer.
Oscilloscope measurements quantify the execution time of a simple digital pin toggle across multiple Arduino boards. Results show that faster CPUs complete the operation in fewer microseconds, though instruction overhead varies by architecture. The data confirm a near-linear relationship between CPU clock speed and pin toggle performance.