Turn Your Arduino Into an ISP

270,227

197

47

Introduction: Turn Your Arduino Into an ISP

Learn how to turn your Arduino into an AVR In System Programmer. This will allow you to burn bootloaders onto new chips or program AVRs without a bootloader.

Step 1: Materials

To begin you will need:
* Arduino (I will be using the Uno)
* AVR Microcontroller (This tutorial will cover the ATtiny85 & ATmega644)
* Arduino IDE
* Breadboard
* Jumpers

Step 2: Setup

Before we begin programming chips we must set up the Arduino. First, make sure your Arduino IDE is up to date. Then select the File >> Examples >> ArduinoISP sketch and upload it to your Arduino. Now your Arduino is now an AVR ISP.

Step 3: Using Your Arduino ISP: Programming AVRs Without Bootloaders

There are a few instances in which it is neccesary to program microcontrollers without a bootloader. For example, if have run out of storage on a chip you can get an additional 2KB when you program without a bootloader. Another example, the one I will show you how to do, is to program chips that have no serial capabilities and therefore cannot use a bootloader. The ATtiny85 is one of these chips. 

To program the ATtiny85 using the Arduino ISP you must first add ATtiny85 support to the Arduino environment:
* Download attiny45_85.zip
* Unzip the folder
* Copy the folder to the Arduino IDE's Hardware folder
* Reopen the Arduino IDE, you should see the ATtiny85 in the Tools >> Board menu

Now connect your Arduino ISP to the ATtiny85 like the diagram below. 

Open the Blink sketch, change every '13' to '0', select ATtiny85 from the Tools >> Board menu, and select the serial port that is your Arduino ISP. Now click on upload and your ATtiny will begin blinking the LED once it's done.

Step 4: Using Your Arduino ISP: Burning Bootloaders

What if you want to program your chip over USB without an ISP? Well then you can use a bootloader. The process of programming a bootloader onto a chip is called burning a bootloader. Let's look how you burn a bootloader onto an ATmega644 using your Arduino ISP. 

To burn the bootloader to the ATmega644 you must first add ATmega644 support to the Arduino environment:
* Download the Sanguino hardware file
* Unzip the folder
* Copy the folder to the Arduino IDE's Hardware folder
* Open Hardware >> Sanguino >> boards.txt 
* Change:
     * 'sanguino.bootloader.file=ATmegaBOOT_644P.hex' to 'sanguino.bootloader.file=ATmegaBOOT_644.hex'
     * 'sanguino.build.mcu=atmega644p' to 'sanguino.build.mcu=atmega644'
* Reopen the Arduino IDE, you should see Sanguino in the Tools >> Board menu 

Now connect your Arduino ISP to the ATmega644 like the diagram below.

Select Sanguino from the Tools >> Board menu, and select the serial port that is your Arduino ISP. Now click on Tools >> Burn Bootloader >> w/ Arduino as ISP. If there is more than one 'w/ Arduino as ISP' just try each one until it works. 

Step 5: Congratulations!

You now have am Arduino ISP and know how to use it!

Microcontroller Contest

Participated in the
Microcontroller Contest

1 Person Made This Project!

Recommendations

  • Big and Small Contest

    Big and Small Contest
  • Game Design: Student Design Challenge

    Game Design: Student Design Challenge
  • Make It Bridge

    Make It Bridge

47 Comments

0
Johnenjudith
Johnenjudith

Question 2 years ago on Step 2

l.S.
When I uplaod the Arduino ISP, I get a Fault.
It sais: At the line #define SERIALSerial; Serial is not declared in this scope.
What do I do?

0
Keshav24
Keshav24

6 years ago

Hi ,
Can u please tell ne how to burn bootloader into atmega32. Can u give me the link of the files needed ..
Ie. Bootloader
Burning software

0
beemakka
beemakka

12 years ago on Introduction

Well jayjay, I was like................................................blhurhshphit, then I was like.................................................plplplplpliiiiiiiiiiiiiiiiiip, then I was like.............................................."what is it with people these days expressing their emotions so poorly?"

is this means that i can program my AVR micro controller with the simple arduino code in C ?

0
diy_bloke
diy_bloke

11 years ago on Step 3

So do i understand correctly yu do not have to load the ArduinoISP sketch? The Arduino programs the Attiny with the sketch that is uploaded to the Arduino? Is taht correct?

0
Asaleemj
Asaleemj

11 years ago on Introduction

I want to use it for Controlling Home appliances through Bluetooth Mobile and please can any one send me complete code for this microcontroller and which tool will be used to assemble and depoly the code

0
Arduino_having11_Guy
Arduino_having11_Guy

Reply 7 years ago

Use an internet portal instead, and just buy a pre made arduino mega.

0
AlexTech
AlexTech

9 years ago on Introduction

What software do you use to make the diagrams?

0
Foxtrot70
Foxtrot70

11 years ago on Introduction

I do not have an arduino board but, have breadboarded a 328 chip. I can burn bootloader to the 328 chip but can not get the ArduinoISP sketch to load to the 328. I do get an error msg... avrdude: stk500_getsync(): not in sync: resp-0x00 . I also have some programs I want to DL to the ATTiny85 but, can not until this problem is solved. Can you help me?

0
Gairlochan
Gairlochan

Reply 9 years ago on Introduction

No, in this context ISP stands for 'In System Programmer'. Iow, it's a device which enables you to programme your AVR chip in situ, without having to remove it from the circuit. ISP programming is a fairly recent innovation in microcontroller programming.

0
atb_uk
atb_uk

Reply 10 years ago on Introduction

Hi.
I had the exact same problem when I was using Arduino as an ISP.
What I found is that arduino is trying to write data too fast.
You can fix it by selecting "Arduino NG or older" from the boards menu and "Arduino ISP" as a programmer. This will force ISP to write data at 19,2kbps instead of 57,6kbps. Hope it helps.