Skip to main content

Arduino

EEPROM Programmer: Migrating from JSON-RPC to Binary Protocol

2022 words·10 mins· loading · loading
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.

EEPROM Programmer: Supported Chips

1869 words·9 mins· loading · loading
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.

EEPROM Programmer: Implementing Serial JSON-RPC API

949 words·5 mins· loading · loading
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.

Project: Serial JSON-RPC for Arduino

970 words·5 mins· loading · loading
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.

How to Debug Misconfigured Arduino Pins

2011 words·10 mins· loading · loading
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.

EEPROM Programmer: Debugging Read Operations

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.