Some time ago I published a short tutorial concerning the use of the internal EEPROM belonging to the Atmel ATmega328 (etc.) microcontroller in our various Arduino boards. Although making use of the EEPROM is certainly useful, it has a theoretical finite lifespan – according to the Atmel data sheet (download .pdf) it is 100,000 write/erase cycles.
One of my twitter followers asked me “is that 100,000 uses per address, or the entire EEPROM?” – a very good question. So in the name of wanton destruction I have devised a simple way to answer the question of EEPROM lifespan. We will write the number 170 (10101010 in binary) to each EEPROM address, then read each EEPROM address to check the stored number. The process is then repeated by writing the number 85 (01010101 in binary) to each address and then checking it again. The two binary numbers were chosen to ensure each bit in an address has an equal number of state changes.
After both of the processes listed above has completed, then the whole lot repeats. The process is halted when an incorrectly stored number is read from the EEPROM – the first failure. At this point the number of cycles, start and end time data are shown on the LCD.
The result? 1,230,163 write/read cycles (per address) before failure. That’s an order of magnitude+ beyond Atmel’s specs, though Atmel does tend to be conservative with their numbers.
EEPROM Destroyer - [Link]
Mike Chambers writes:
Here is how it works. I have an Arduino Duemilanove with ATMega328 which has two photo-resistors connected (with a 10k pull down resistor). I set up two laser pointers to shine a laser directly onto the photo-resistor (which is enclosed within a dark box). The Arduino monitors the values returned from the light sensor, and watches for any changes that indicate that the laser bean has been broken. When both laser beams are broken, the Arduino calculates the amount of time between when each sensor was tripped. It then sends that value to the Adobe AIR based client, which is connected to the Arduino via USB / Serial port and a serial port proxy (in the case, TinkerProxy).
Arduino based speed detector with a Flash! – [Link]
Jaroslaw Lupinski designed the Senpai (Shield for Extra Nimble Programming of Arduino) shield, to make it easy to program AVR microcontrollers using an Arduino: [via]
If you want to take your device to the next level, you’ll need to program a bare AVR chip to run the code you’ve developed. If you want to build around the ATMega328 chip (the same chip that’s inside the Arduino), you can even program the bare chip with the same code as the Arduino sketch. A great sketch has been written by an Arduino user that lets you turn your Arduino into an AVR programmer. It’s great if you just need to program one chip and be done with it, but sometimes you want to develop code while a chip is socketed on a board, to program surface mount components, or to program lots of chips in a short amount of time. Using the shield I developed, you can use the ZIF socket to quickly swap out chips to be programmed (it supports 3 device families), or use the Atmel standard ICSP protocol to program chips that are already in-circuit with the ICSP header.
Program AVR microcontrollers using your Arduino and the Senpai shield – [Link]
dangerousprototypes.com writes: [via]
Here’s a project which unifies art and tech: a LilyPad Cyclocomputer. Mark Fickett designed this bicycle computer which uses a magnet and reed switch as a cyclocomputer wheel sensor. This sensor is read by the Arduino/LilyPad (Atmega328) which processes the data and stores two trip meters and a speed histogram; the trip meters are reported in Morse code via a speaker, and the histogram can be saved to EEPROM and later printed over the serial connection.
Arduino Cyclocomputer – [Link]
Prototino ATMega328 Kit in the Maker Shed:
The Prototino ATMega328 kit is designed to make a permanent version of your Arduino project once you have perfected it on a breadboard but without the expense of embedding your original project. The Prototino also makes your project more reliable and robust. With the prototyping area integrated with the microprocessor, your project will have fewer boards and fewer wires.
Prototino ATMega328 Kit – [Link]
All AVR microcontrollers have internal watchdog timer that can be successfully used in your projects. Atmega328 and other modern AVR microcontrollers have so called Enhanced Watchdog Timer (WDT). It has few very useful features including: separate 128kHz clock source, ability to reset microcontroller and generate interrupt.
Using watchdog timer in your projects - [Link]
Asteroids running on Hackvision. Written completely with Arduino:
I implemented Asteroids for Hackvision, written completely using Arduino technology. The ATmega328 is more than powerful enough for real arcade action!
Asteroids for the Arduino – [Link]
Fabien writes :
AdaFruit released a monochrome OLED screen last week and I wanted to test it with a netduino. So, I ported the Arduino driver written by Limor to C#, wrote a basic test app, soldered header pins to the OLED display, hooked it up to my netduino and… nothing happened. It became clear that I needed to test the OLED display on an Arduino first to make sure that the screen was not defective in the first place. I had on hand a Boarduino that I had previously upgraded with an Atmega328 and hacked to run on 3.3 volts instead of 5 volts, removing the need to use the level-shifter provided with the OLED display.
Using an AdaFruit OLED display on a Boarduino without a level shifter – [Link]
This article discuss how to use the 16bit timer on Atmega328.
Atmega328 has one 16 bit timer which is more powerful comparing to 8 bit timers. 16 bit timer is called Timer/Counter1. Counter1 has twice more bits than 8 bit Counter0, so you get more counts leading to longer duration and more precise timings.
Programming 16 bit timer on Atmega328 - [Link]