Kevin Darrah Made His Own AVR Programmer

Who is Kevin Darrah? He is a senior embedded systems engineer with his own website and YouTube channel. He uses these two mediums as well…

Cabe Atwell
7 years ago

Who is Kevin Darrah? He is a senior embedded systems engineer with his own website and YouTube channel. He uses these two mediums as well as a wiki to showcase his side projects and educate people about electronics.

Darrah wanted an extremely simple AVR programmer that could read and write directly to the EEPROM. He also wanted a rapid way to upload code and burn boot loaders to multiple boards while able to easily set fuses. Darrah says that he was inspired by Nick Gammon’s standalone AVR programmer project. If clicking the link to investigate Nick Gammon’s efforts is just a bit too much to ask, here is the TLDR version. Circa 2012, a fellow named Nick Gammon made an AVR programmer with an Arduino Uno, an SD card adaptor and a bird’s nest of jumper wires. Then, much later, Darrah used a whole lot of the code from that project for his own programmer.

Darrah’s programmer interfaces with AVR chips via ICSP (in-circuit serial programming). In the video below, a handful of ATmega328P breakout boards (that he designed), are used as target boards. He burns a simple program that accepts a date code via the serial monitor.

With a push of the blue button, the programmer it will read a compiled hex file from its SD card reader and load it to the target microcontroller. A fairly unique feature is the on-board buzzer that beeps when the hex file is finished loading. The LEDs on the programmer indicate whether the programming attempt succeeded or failed. What about that red button? That is just a power reset in case the device locks up.

The programmer can read or write to the non-volatile memory on the target micro. Darrah uses setting modes as an example of when this would be useful. Imagine a collection of identical boards all loaded with identical code. If you want some of the boards to boot up in mode 4 (mode 4 being whatever you want it to be) then you can do that by writing to a specific byte in the EEPROM. When the micro boots up, it will read that specific byte and know what mode it is supposed to be running.

The programmer is powered from an FTDI header (you will need a USB0-to-UART cable) and is designed to power the target microcontroller at 3.3V. The power connections to the target micro are fused with a 500mA PTC, and all of the data lines between target and programmer are protected with inline resistors and clamping diodes. The idea is to protect the programmer from shorts or other faults on target boards. After all, it’s inevitable that eventually, you will try to program something that has a catastrophic fault in its construction, especially if prototyping new boards.

This is a very easy project for makers, engineers, enthusiasts, etc. It is also an extremely useful tool to have in your toolbox. Designed with all thru-hole components, Darrah wanted this project to be very easy to construct and repair. Code, schematics, a parts list, assembly tips and instructions can all be found on Darrah’s AVR Programmer Wiki, while the unpopulated PCBs are available on Tindie. The ATmega328 breakout boards from the demo video and some other cool little projects are for sale as well.

Latest articles
Sponsored articles
Related articles
Latest articles
Read more
Related articles