Monday, October 13, 2014

Using PicKit2 Programmer to program Atmel's microcontrollers

Many hobbists are familiar with Arduino kit.  This beast uses various Microcontrollers from Atmel.  For example, Arduino UNO uses AtMega 328p.

Normally, we use the pcb kit to program the chip, as the Arduino (or the clones) use USB to serial chip to translate  USB to serial needed to program Arduino.

For people who has done hacking on PIC microcontrollers from MicroChip and wants to use bare-metal chip, they can program the Atmel chips using the existing cheap PicKit2 programmer.  What they need just the Pickit2 programmer and a software tool called avrdude.

The pin connections:

AVR   - PICKit2 (pin):
RST   - VPP/MCLR (1)
VDD   - VDD Target (2) -- optional if AVR self powered
GND   - GND (3)
MISO  - PGD (4)
SCLK  - PDC (5)
MOSI  - AUX (6) 
Some of command examples are shown below:

To write our firmware to the flash in AtMega 328p:

$ avrdude -c pickit2 -p m328p -v -V -U flash:w:"myfirmware.hex":a 

To upload bootloader (e.g. to upload ARDUINO bootloader):
$ avrdude -c pickit2 -p m328p -v -V -U boot:w:"boot.hex":a 



  1. succes reading atmega329p on uno r3. but failed to write bootloader. result: "boot" memory type not defined for part "ATmega328P". any suggestions?

    1. Probably the parameters needed by avrdude has changed since I wrote the blog. Check avrdude documentation on how to upload a firmware.