Vinnies Definite Straddling Header
From Just in Time
After some months of struggling with the programming header breakout boards I had a new insight; the programming header could be placed OVER the AVR microcontroller to 1) save space and 2) make fast and easy connections.
The first prototype was for the Attiny2313 and did just that; it connected the programming header pins to the appropriate pins.
This is the basic straddling header with a 6 pin header. Initially I made two versions; one for the Attiny2313 that I was using a lot at that time, but the Atmega8 and Atmega88 were beginning to become my favorites, so I designed some for those too (the Mega8, Mega48 and Mega88 have the same pin layout). Unlike Danny's version, I chose to have the cupper on the underside of the board. That way the pins would be able to handle more of a downward force. However, removing the boards had to be done with great care (both installing and removing the board rarely happens by the way, so this is not a very big issue). I used slightly longer pins, but that might not even be necessary. You solder the pins first, on a flat surface, so they level up with the top side of your board. You keep the plastic supports for stability.
The 'Definite' Header
For my class of students I designed the 'definite' straddling header, that also included some stuff that almost every AVR circuit needed and that was more or less 'fool-proof'.
-
1) By adding decoupling capacitors, I made sure that some microcontroller crashes that sometimes occur by switching larger currents (that cause voltage drops) wouldn't bother them too much.
2) For some circuits, timing is essential and you need a crystal. However, crystals on breadboards are bothersome because of the necessary capacitors with weird, never used values that you know you have somewhere but you can never find. The thin wires on those pF capacitors make brittle contact and are the cause of unpredictable behaviour. Therefore, it is much easier to place a crystal of the highest frequency the specific AVR can handle on the board, including the SMT capacitors. If you don't use it, it doesn't affect the XT pins, so that's not to worry.
3) To avoid a faulty connection of the programmer, it's better to use the correct IDC socket.
4) For the pins I now use extra long pin headers. These can be fed 'through' the board for included stability. The plastic on the top side, combined with the solder on the bottom side creates a very sturdy design. I also added a second pin besides the reset pin (for strength) and two dummy pins on the other side of the board for extra stability. Since the board now rests on four pillars, it's easier to connect and disconnect the programming header.
5) The extra pin besides the reset pin is on pin D0, so I could as well add a Led there to make it easy to flash your first blinkled program to test your AVR programming chain. (and/or the specific AVR). The only downside there is, that if you are going to use the serial on higher speeds, the Led could be bothersome. A next version might have a jumper there to disconnect the led if necessary.
When making the boards, it's important to take the surplus board next to the pins into account. If there is too much board, it will be hard to use all of the remaining 3 holes. And sometimes you really need that 3rd one! Make the boards as compact as possible.
Another small error on the design is that the IDC sockets are much wider than one would expect, so the 10uF capacitor has to be tilted to mount it.