ISP or In System Programming is the best way to program AVR microcontrollers as it allows them to be programmed in circuit. This is easier for development, production and most importantly, for updating the firmware later in the field. The tool used for this is an AVR ISP.
The simplest and cheapest options for AVR ISP are used by Arduino boards. The AVR microcontroller, usually an ATmega328P, contains a bootloader – a separate piece of pre-written code that takes care of programming the microcontroller. Apart from built-in Arduino code, free ISP utilities such as PonyProg or AVRDude can be used to update your code. There are also some very low cost unboxed programmers on Ebay that can be used with Arduino.
If you have moved beyond Arduino and are using Atmel AVRStudio or AtmelStudio and writing in C or assembler, the best programming option is Atmel AVR ISP MKII.
Atmel themselves have stopped producing this programmer but there are some excellent clones available. The best in our option is from Waveshare as it is completely compatible with the original and has more ISP connector options – 6-way, 10-way and flying leads.
This programmer runs from AVRStudio and is fully integrated with it, which simplifies your development and it can be purchased here Waveshare AVRISP-MKII
If you are serious about development, you could use a combined programmer and ICE instead. Atmel AVR Dragon is still being manufactured and just like AVRISP-MKII it runs from within AVRStudio. In addition to the ISP functionality it is also an emulator so that you can debug your code as well.
This product is available here – Atmel AVR Dragon
Both these AVR ISPs are excellent for code development as they are integrated into the development environment but this advantage disappears once your code is finished. AVRStudio is large and complicated and having to run it, or get someone else to use it, just to program a few chips gets really tedious. This is where you want a programmer with its own software GUI that can be used to program AVR microcontrollers without running Studio.
Kanda AVRISP-U is a very low cost USB AVR ISP that has a tried and tested software interface designed for AVR programming. It features include code buffers, ability to power the target, automatic target detection and ISP speed setting. It has all the normal read/program/verify functions you would expect plus extra operations such as serial numbering and calibration bytes.
More information about this programmer is here – AVRISP-U Programmer Details
This programmer is great for low volume programming and standard ISP but for advanced programming features and production programming, you need something more sophisticated. If you need JTAG programming or the ability to run your own software interface or test equipment using a DLL or command line, then the AVRUSB programmer is ideal. More information is here – AVR USB Programmer with JTAG and DLL.
All the AVR programming solutions discussed so far need a PC or laptop and don’t allow simple remote programming. If you have products that have shipped to customers or distributors everywhere and need to do a firmware update, these programmers don’t provide a good answer. What you need in this scenario is a standalone programmer that is as simple to use as possible. Kanda AVR hand held programmers provide an easy resolution.
These are loaded from the PC and once loaded they are plugged in to a target and one button press updates the target AVR firmware. They can be sent where they are needed and are much easier to use in difficult environments than a PC or laptop. There is also a version that can hold data on 8 different targets, which is ideal for product customisation or updating a range of appliances.
Although this post has concentrated on Kanda products, it does describe the range of AVR ISP that are available and should get you thinking about the correct solution for your AVR microcontroller programming task.
Other AVR Information