Fast EEPROM operations

This is the second article about using an external EEPROM I2C chip with an Arduino or any compatible board, like ConnDuino. In a previous article we covered the basics of reading and writing data to the EEPROM. We were able to read and write any data-type, having arbitrary size, but we had to decompose and transfer them to the EEPROM byte after byte. 

In this article, the writing and reading of continuous blocks will be explained. These operations are a little bit more complicated to implement and some better understanding of the EEPROM is required, but for large objects they may be an order of magnitude faster.

Basic operations with EEPROM using Arduino and ConnDuino

A temperature controller should remember the desired temperature level after powering it off and on. An alarm clock, the next time it should ring. Several projects should remember some user preferences. Other projects need more space to store their strings. To these requirements, EEPROM seems a convenient and economical solution. This article makes an introduction to EEPROM modules, how to wire them, understand them and effectively take advantage of them in our programs with an Arduino or any compatible board, like the ConnDuino that is discussed through this site. To be more specific, this article is about EEPROM modules that use the I2C (also called TWI) interface, although a section about the Atmega328 built-in EEPROM is also included. This will be the first in a series of articles, dealing with EEPROM.

ConnDuino quick reference

This is the page, where the functionality of ConnDuino pins and jumpers is shortly described. No in-depth explanations here, only tables lists with quick descriptions. The following topics are included:

  • Functionality of the digital pins
  • Functionality of the analog pins
  • Functionality of the TFT pins
  • Functionality of the LCD pins
  • Functionality of the RF433 pins
  • Functionality of the RTC pins
  • Functionality of the jumper headers

Expanding ConnDuino: push buttons and breadboard

In the right side of the ConnDuino front, a breadboard has been arranged, for through hole components, allowing for project specific expansion needs. Furthermore, at the top right, a voltage ladder is included to be normally used for push button input, using a single analog pin. This article describes these two features.

ConnDuino intrefaces to add-on modules

This is the region where add-on devices may be plugged to ConnDuino. Several pin headers exist here, which interface the pinout of some common modules, such as:

  • TFT display screen
  • LCD 16x2 display
  • Radio receiver or transmitter modules
  • Real time clock (RTC) module

The mapping of these pin headers to the Arduino compatible digital or analog pins (in other words the Atmega328p pins), has been designed in such a way that no conflict occurs. This means that all pin headers may be utilized concurrently, to install the respective number of add-on devices, while still some digital and analog pins remain free for other uses!

In this article the details for each installable add-on module are described.

The Arduino in ConnDuino

The article describes the Arduino compatible region of ConnDuino, and its enhancements. Also, the topic of I2C pull-up resistors and their suitable values is discussed.

All the pins of the official Arduino Uno Rev.3 design are available in ConnDuino, in their expected positions. Included are the analog and digital pins as well as the supply and ground pins.

An introduction to ConnDuino

ConnDuino is a custom, Arduino combatible board, based on the Atmega328p microcontroller. It has been conceived and designed as a platform for rapid development of electronics projects. Before going into details, its main features are the following:

  • Pin combatible with Arduino Uno Rev.3 (analog, digital and supply pins).
  • Selectable input voltage (5v or 3.3v).
  • Selectable voltage for the I2C bus (5v or 3.3v).
  • Custom pins for several components to be installed (tft screen, lcd 16x2 display, eeprom, rtc, rf module, etc).
  • Multiple ground and regulated voltage pins for sensors or other devices (5v and 3.3v).
  • Multiple SPI bus pins (4 sets).
  • Multiple I2C bus pins (6 sets).
  • On board voltage ladder for up to six buttons connected to a single analog pin.
  • 8x13 holes as expansion/prototyping area