Overview

Author Gravatar Image LADY ADA

We previously showed how to use an Arduino + protoshield + ZIF socket to make a programmer that can burn a lot of Arduino bootloaders. In our blog comments a user commented that he had written a stand-alone program for the Arduino called Optiloader that is similar and might be worth checking out.

What Optiloader does is kinda of neat. Instead of having a computer that talks thru the Arduino to a chip for programming, instead the Arduino itself programs the chip. This means you can program chips without having a computer involved. The good news about this technique is that it is incredibly fast, you can program chips 10x faster than with a computer and without having to type anything in. The only downside is that its very specialized, once you set it up the programmer can only do one chip (in general) with one HEX file. If you want to update it, it can be a little effort to reconfigure.

However, if you are burning a lot of chips, this can be a real blessing. We can program and burn an Arduino bootloader chip in about 5 seconds. Normally with a computer you're talking 40 seconds or so. Another nice thing is that you can make it very clear when a failure has occured. Instead of reading text on a computer screen - a piezo will beep once on success. We've found that audio feedback is way more likely to be noticed than visual feedback.

We adapted Optiloader to be more flexible - so it can program any AVR with any HEX file. While you don't need to use an Arduino for this, we have a lot of Arduino's kicking around here so they make a handy base.

This code can be adapted for programming any AVR that can be ISP programmed (this is like 99% of AVRs) but in this example the wiring will be for the Atmega8/48/88/168/328 series and the code will be the Adaboot bootloader. If you have other chips you are programming, check the datasheet for how to wire VCC, Gnd, MISO, MOSI, SCK, RST and XTAL1 (if you need external clocking).
We have a report that this procedure does not work with Arduino 1.5.2. Use the latest mainstream Arduino release instead!
Last updated on 2014-04-24 at 03.41.15 PM Published on 2013-07-23 at 02.12.22 PM