After playing around with Arduino Uno, I grew my hunger for more I/O pins and urge to get Arduino like functionality for cheap.
I came across Sanguino page [link] and RepRap page detailing about loading bootloader to Sanguino (Atmega16A) chip [link].
I experimented with breadboard and some Atmega16A chips.
I found it cumbersome to each time wire the whole circuit on breadboard. But at the same time using Arduino as ISP is lucrative.
I designed this harness to connect Arduino and Atmega16A chips and be ready for downloading programs to target chip in no time
Note 1: I have written this Ible with Arduino Uno and Atmega16A as my target chips.
Note 2: Please take care about Uno and the Atmega16 chip and double check all connections before powering up. These chips can easily get destroyed.
Step 1: Harness Circuit
This wire harness is very simple and uses idea from Sanguino page detailing about programming Atmega644 with Arduino ISP.
In schematics, you can see harness wires originating from Arduino and their corresponding end-points at Atmega16A.
List of items needed for wire harness
1) Some wires
2) PCB pins
3) heat shrink tubing
5) 0.1 Micro ceramic capacitor
6) 1 K ohm resistor
Solder wires to PCB pins and use heat shrink tubing to insulate pins. Connect LEDs, 1K resistor and capacitor as per schematic.
In addition, you need to connect 16MHz crystal to pins 12 and 13 of Atmega16A. Also connect harness Vcc and GND pins to corresponding Atmega16 pins.
Step 2: Hex File
Write your code in Arduino IDE, compile and locate the resulting HEX file (check this to know where HEX files are) or be ready with you HEX file
Step 3: Be Ready With Arduino Uno
Find out the port at which Arduino is connected
Download program ArduinoISP to Arduino Uno
Step 4: Connect Uno to Target Chip
Connect Arduion Uno and Atmega16A (on breadboard) using the harness as per schematics given.
Step 5: Burn HEX File to Target Chip
Go to command prompt on Windows machine
Navigate to folder where HEX file is placed
Type command as follows and press Enter
avrdude -p m16 -P COM6 -c avrisp -b 9600 -U flash:w:test.hex
TX and RX LEDs on Arduino will blink
If everything goes fine, you should see writing action, reading action and finally something like this in command prompt window
avrdude.exe: verifying ...
avrdude.exe: 132 bytes of flash verified
avrdude.exe: safemode: Fuses OK
avrdude.exe done. Thank you.
Three LEDs in the harness will also blink and show status.
Note: Do not touch or try to remove any wire while programming is in progress. This will brick Arduino or the Atmega16 chip or both.