22 July 2014

An Arduino Library for External I2C EEPROMs

This is an update of a library I wrote last year for a data logger project. At that time I only needed it to support a couple different EEPROM sizes. Now I've made it more general; it will support EEPROMs between 2k bits and 2M bits (256 bytes to 256k bytes). The library supports multiple EEPROMs on the I2C bus as a single address space (the EEPROMs must be of the same type and their address pins must be appropriately strapped). I/Os can span blocks (for EEPROMs with an internal block structure), pages and devices.

I even wrote some reasonably complete documentation(!) If you try the library and like it, or not, or find issues, please let me know. There is a list of devices that it's been tested with in the ReadMe file; I'd especially like to hear from anyone that tries it with a device not yet listed.

The library can be downloaded from GitHub.

03 July 2014

A Serial Data Logger

This is a project I've been wanting to do for a while. A lot of my projects write debug and other status information to the serial port. Fairly often it seems that I have to let them run for hours or even days to catch an elusive intermittent bug. Until now, this has meant keeping a PC running with a terminal program connected to the microcontroller to log the serial output, which seems pretty inefficient. My primary goal with this logger was to improve that situation.

Hardware consists of an Arduino Uno or compatible, Adafruit's Micro SD breakout board, a button switch and three LEDs. It should be easily adaptable to work with the Micro SD on an Ethernet shield or other hardware. (I use the card detect contact on AFI's board; I don't think the shield has that feature, but it would be minor to remove it from the code.)

The serial input is double-buffered and interrupt driven to maximize throughput. Details, code and schematic are on GitHub.