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 AD1860 DAC IC is correctly wired and produces a valid analog output. A reference schematic from the early 1990s is used to identify non-critical components, and a full-scale sawtooth waveform (±3 V) is generated on one channel using an Arduino. The hardware setup functions as expected; the remaining task is implementing a correct SPI interface capable of handling 18-bit transfers.
Several methods for generating ±5 V rails were evaluated, ranging from dual wall warts to regulator-based and buck-boost solutions, with stability, noise, and grounding complexity as the main trade-offs. The most practical approach for the DAC setup proved to be regulator-based supplies, while more complex configurations offered little benefit and higher power consumption.
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.