USB ASP ISP 10 Pin [Product Link] is a programmer based on Thomas Fischl’s USBasp design and connects to your computer’s USB port.
- Elegant design
- Support for AVRDude from version 5.2 onwards
- Allows reading/ writing the microcontroller EEPROM, firmware, fuse bits and lock bits
- Support for Linux, Mac OS X and Windows
- 5 KB/sec maximum write speed
- Software controlled SCK option to support targets with low clock speed (< 1.5MHz)
- 10 pin ISP interface
The USB interface of the Programmer to the computer is achieved by an atmega processor and the rest of the functionality is handled in firmware.
Mega Series – ATmega8, ATmega48, ATmega88, ATmega168, ATmega328, ATmega103, ATmega128, ATmega1280, ATmega1281, ATmega16, ATmega161, ATmega162, ATmega163, ATmega164, ATmega169, ATmega2560, ATmega2561, ATmega32, ATmega324, ATmega329, ATmega3290, ATmega64, ATmega640, ATmega644, ATmega649, ATmega6490, ATmega8515, ATmega8535.
Tiny Series – ATtiny12, ATtiny13, ATtiny15, ATtiny25, ATtiny26, ATtiny45, ATtiny85, ATtiny2313.
Classic Series – AT90S1200, AT90S2313, AT90S2333, AT90S2343, AT90S4414, AT90S4433, AT90S4434, AT90S8515, AT90S8535.
CAN Series – AT90CAN128.
PWM Series – AT90PWM2, AT90PWM3.
The programmer has the following pins.
When using with a 6 pin ISP header, you need to connect MOSI, RESET, SCK, MISO, Vcc and any of the GND pins.
Burning Arduino Bootloader
1. Get the USBASP programmer [Product Link]
2. Connecting to the microcontroller
a. When bootloading a chip that is placed on the Arduino Board (shown below), connect the USBASP programmer pins to the ICSP header pins near the microcontroller on the Arduino Board using 1-to-1 Female Jumper Cables [Product Link]. You can power the board using an external power source (7-16V) or connect the Vcc and GND pins from the USBASP directly to the ICSP headers.
b. When bootloading a chip that is placed on a breadboard, make sure you have the following connections in place-
Pin 1 – RESET – 10k ohm resistor to +5V output of Voltage Regulator (7805).
Pin 7 – Vcc – Output Voltage of Voltage Regulator.
Pin 8 – GND – GND of Voltage Regulator.
Pin 20 – AVcc – Supply voltage for the ADC converter. Output Voltage of Voltage Regulator when not using ADC.
Pin 21 – AREF – Analog reference pin for ADC. Connected to Output Voltage of Voltage Regulator.
Pin 22 – GND – GND of Voltage Regulator.
There should be a 16MHz External clock between Pin 9 and 10, with two 22 pF capacitors going to ground from both pins. There should also be a 10µF decoupling capacitor between the input power and ground and one 10µF capacitor on the output power and ground, with the negative side of the capacitor (usually indicated with a silver line on the side or with a shorter leg) going to ground.
After checking all the above connections, connect the MISO pin from USBASP will go to Pin 18, SCK will go to Pin 19, RESET will go to Pin 1, MOSI will go to Pin 17.
3. After connecting the USBASP from computer to the Arduino board/ATmega chip, open the Arduino IDE. Select the desired board from ‘Tools->Board’ (you’ll most likely want to use Arduino Uno, Duemilanove or Diecimilia) and the correct Serial Port. Select USBasp from ‘Tools->Programmer’. Then, click on the ‘Tools->Burn Bootloader’ to start burning the bootloader which takes a few minutes, at the end of which time, the IDE will show “Done burning bootloader”.
1. RESET pin can also have a small push button, connected to it. This button is connected between Pin 1 and GND.
2. If you need to also later upload sketches to the chip placed in the breadboard, connect Pin 2 (RX) of the microcontroller to the TX of the FTDI FT232RL USB-to-Serial Module [Product Link] and connect Pin 3 (TX) of your Atmega chip to the RX of the FTDI FT232RL Module. Also connect the RESET pin of the ATmega chip to the DTR pin via a 0.1µF (=100nF) capacitor.
3. If you want to connect an LED (red or green) to any of the pins on the board (or to the +5V power supply) then connect a 220 ohm resistor to the digital pin of the chip (or +5V). Connect the long leg (anode) of the LED to the other end of the resistor, and the short leg (cathode) to GND.
4. If ADC is being used, Pin 20 is connected to power, through a low-pass filter.
Programming using Arduino IDE
On a chip that does not have the Arduino Bootloader, use the Arduino IDE to write code and the use the USBASP to upload that code to the microcontroller. This allows the full use of program space and requires following change to the IDE.
Go to your IDE file location “~\arduino-1.0.5\lib”. Open the file ‘preferences.txt’ and find the sentence ‘upload.using = bootloader’. Change this to the identifier of one of the programmers in ‘~\arduino-1.0.5\hardware\arduino\programmers.txt’. In our case this is changed to ‘upload.using = usbasp’. Some other identifiers are : avrisp, avrispmkii, usbtinyisp, parallel, arduinoisp.
After this, code normally in the Arduino IDE, connect the USBASP pins to the ICSP headers of the Arduino board as shown above or directly to the chip placed in the breadboard and then upload the program as you would normally do.
To go back to uploading sketches over the USB or serial port without an external programmer, you’ll need to set the ‘upload.using’ in ‘preferences.txt’ back to ‘bootloader’ and burn the bootloader back onto the chip.
On a chip that has the Arduino Bootloader, select ‘Arduino UNO’ (or whatever board you are programming) from ‘Tools->Board’. Then select USBasp from ‘Tools->Programmer’ and go to ‘File->Upload Using Programmer’ to upload your code to the chip.
Thomas Fischl’s website for Firmware and Windows Drivers [Link]
Possible Application Areas
1. Bootloading Arduino on AVR Microcontrollers.
2. Uploading Arduino programs on a microcontroller, with or without the Arduino Bootloader.
Did you create a project using this product? Leave details/links below!