24 May 2013

How to Do ISP Programming – Part 3: Software Usage

Installing the Software
As mentioned, there are many options when it comes to software. One standard program, which is available for many operating systems is avrdude. Unfortunately, it is a command line tool, which makes it less than ideal for beginners. But there are GUI frontends available. I decided to use AVRDUDESS for this tutorial. And it is quite easy to use.

But first, install the USBasp driver. I would suggest to use the version from the project website. Insert the programmer to your USB port, and wait for the installation window to appear. Point the driver installation routine to the directory where you extracted you driver archive to. Once this is done, your device manager should have an entry "USBasp" under the section libusb-win32 devices.
Now extract the AVRDUDESS to a directory of your choice and you are done.

As a last step, connect your programmer to the target board.

All Systems Go!
So now everything is ready for programming. Let us assume that you want to write the hex file from my project, the simple LED cube to an ATMega8L controller. Here is what you do:
  1. Start AVRDUDESS. Two windows will appear: The GUI and the terminal window, where avrdude will be executed. All output from avrdude will appear here as well.
  2. Select the programmer: USBasp
  3. Select an MCU:  ATMEGA8
  4. Leave the Port entry empty (the USB output will be found by magic)
  5. Baudrate is only needed for programmers connected to the serial port
  6. Leave bit clock empty or set to a value like 10 (this is the SCK setting in microseconds; 1 µs = 1 MHz, 4 µs = 250 kHz, 10 µs = 100 kHz)
  7. In the files section, select the hex file that you want to write
  8. Set the Format option to Auto or Intel Hex
  9. Press the Write radio button in the Flash section
  10. Press the Start! button 
And this is what the whole process should look like:

In part 4 we look at setting fuses and at what can go wrong. 


  1. I have heard (and have actually downloaded) that there is a firmware update to the USBasp so allow programming of AT89S4051 micros. Is this correct? I downloaded and installed ProgISP V1.72 which does list the 89S4051 as a device it can program. I tried to burn the update into a USBasp programmer (with JP2) set and appeared to program without problem, but afterwords windows reports "device not recognized". I have 2 dead programmers and am gunshy now about trying to do any further updates (I have 2 programmers remaining). Any thoughts sir?

    1. Ruben,

      first of all let me say that I have no experience with the 89S4051. But I had a quick look at the data sheet and it seems that it uses the exact same interface as the AVRs.

      My guess is that for that reason the programmer itself can handle the '4051 and it is only matter of the PC software, whether it can be used or not.

      Have you tried the original firmware with ProgISP? I expect this would work.

      As to why your two programmers are dead, I don't understand. Did you remember to remove JP2 after programming? Did you set the fuses correctly after programming? Where did you get the firmware from? Do you still have access via the ISP interface?

  2. Dear Sir,
    I am using atmega16 microcontroller. Will it work like atmega8 that you mentioned here. If not how can i use USBASP v2.0 to burn the uc.Another one is if it works then which software i should use.Please give me the link to download it.
    Thank You

    1. The process is exactly the same. The link to the software is in the text above.

      Of course, you have to set your device (ATMEGA16).

  3. I have a problem with the programming of my atmega8A MCU. Avrdude says that the target doesn't answer. I tried to hook up a external crystal(12.000 , the same as that one in the programmer), but the same error comes again. I have a USBasp programmer from betemcu - the programmer lights up if I press START! can you help me with my problem? is it the programmer or the MCU? (and it isn't the wiring... I checked it over ten times)
    Best Regards

  4. Can upload a bootloader on my new arduino with atmega328p using this dudess?

  5. Replies
    1. Yes, that works. The Arduino usually has an ISP connector, that might or might not be populated. But it usually is a 6-pin. So you would need a 10-pin/6-pin adapter.