Evolution of breadboard programming headers
From Just in Time
Both of us currently use AVRs as our platform-of-choice for most digital projects. We love the diversity, versatility, the straight memory layout, the availability of compilers and, to be brutely honest, the very low prices at which these microcontrollers can be bought.
We typically provide our home-grown PCBs with standard 6-pin programming headers. It may take an extra hour to route the the damn traces for these things on our one-sided boards, but it is generally worth it, being able to re-flash version 0.037 of our firmware.
As is usual, most of our projects start out on solderless bread boards. The AVRs on the breadboards need to be programmed too, so we've evolved several ways to program these as well. This page describes them.
It's simple, really. we need to connect the six pins of our programmer to the corresponding pins on the avr. The programmer comes with a flat cable with block (IDC-) connectors.
Additional requirement: being able to disconnect and reconnect the pins frequently is a plus.
Direct jumper wires
The simplest solution. And the one we both abandoned after about 5 minutes: just take 6 jumper wires, push one end in the connector and the other end at the appropriate row of the bread board.
disconnecting and reconnecting is quite a hassle with this and all in all this is not very stable.
Straight breakout board
This is quite a simple breakout board that doesn't even need to made as a custom PCB: plain veroboard would work just fine. The breakout board consists of a two-row grid of header pins on top that receives the flat cable connector and two three-pin headers at 300 mil distance to be placed on both sides of the aisle running down the board.
The breakout is pushed into the breadboard and then 6 jumper wires are used to connect the programmer signals to the appropriate avr pins.
This version has served us well. It takes some setting up for every new project and I found myself doing an image search for "avr programming header pinout" every time I started a new project.
It's quite easy to disconnect and reconnect the cable with this one.
There are several of these on the internet. Most of them are some form of Arduino-compatible breakout-board. The big plus of these is that you can use them to adapt your SMT AVR to be used on the breadboard. The image shows a shoddy version that was created because I only had SMT attiny13s readily available.