Instructables
Picture of Bootload an ATmega328

This instructable adds to any of the Arduino on a Breadboard instructables. I wrote my own breadboard-Arduino tutorial, and then I found that I was struggling to program some of the boards I made. A lot of research and dead-ends got me understanding that:

1. You either need a microcontroller with a pre-loaded Bootloader, or must load your own
2. Not all ATmega328’s are equal

(A bootloader, very simply, is a programme that sits on the chip and manages the upload of your sketches onto the chip)

There are plenty of bootloading resources, but I couldn’t find a single one that pulled everything together in a way that made sense to me.

If this instructable helped you, please visit Crash Bang Prototyping, follow us on twitter, and join in with our prototyping resources and tools.

Here goes…

 
Remove these adsRemove these ads by Signing Up

Step 1: Parts

1 x Arduino on a Breadboard
1 x Arduino UNO
Connecting Wires
Arduino IDE installed on your PC

Step 2: The Approach

Picture of The Approach

We’re going to use the Arduino UNO to bootload the ATmega328 that is sitting on the Arduino-on-a-Breadboard. This is fairly straightforward if you have an ATmega328P-PU, but needs an extra step for an ATmega328-PU. I’ll tackle the differences later in the Instructable.

Step 3: Program your Arduino UNO as an ISP

Picture of Program your Arduino UNO as an ISP

We need to program the Arduino UNO to act as a an ISP (In-System Programmer), so that it can burn the bootloader onto the Breadboard chip.

  1. Open the Arduino IDE
  2. Open the ArduinoISP sketch (under File, Examples)
  3. If you’re using version 1.0 of the IDE:

search for void heartbeatand change the line that reads:

delay(40);

to

delay(20);

Connect your UNO to the PC, making sure it’s not connected to the Arduino on a Breadboard.

Ensure your UNO is selected under the Boards menu option, and upload the sketch.

1-40 of 66Next »
bhutanidivye11 months ago

Thanks a lot

gewkwn12 months ago

thanks for info !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

IT WORKED!!!

AndyTallack (author)  kylebarker821 year ago
Great stuff - thanks for letting me know! Would love it if you followed Crash-Bang on Twitter as a thanks :)
Thanks for this. Helped me save a wasted ATmega328
AndyTallack (author)  Antzy Carmasaic1 year ago
Excellent, pleased it helped! Thanks for letting me know.
JPS21 month ago

Perhaps a better, more permanent solution: if you buy a lot of these chips is to edit avrdude.conf and add the following below the part parent "m328" section:

part parent "m328" id = "m328pu"; desc = "ATmega328PU"; signature = 0x1e 0x95 0x14; ocdrev = 1;

This should permanently add the 328PU to your supported parts for avrdude.

AndyTallack (author)  JPS224 days ago

Thanks for the suggestion. When I originally wrote this, the GCC toolchain didn't support the m328, so while AVRDude would upload ok, the sketch wouldn't compile. I understand this has changed with the latest releases of GCC - I need to test it out and amend the Instructable as soon as I have a chance.

Thanks for the post.

gLorieul29 days ago

Hi,
@AndyTallack just to say that on linux, the "avrdude.conf" file is located in "/etc/avrdude.conf" (at least that is the case for linux mint 17 "Qiana"). You might want to add this information to your tutorial ; I am sure linux users would appreciate that.
Everything else works as expected.
Thanks for the tutorial !
Cheers,
G. Lorieul

AndyTallack (author)  gLorieul24 days ago

Great, thanks - will include when I get a gap.

Thanks for the info!

saikat192 months ago
It didn't worked fr me I''m using atmega 328-pu
AndyTallack (author)  saikat192 months ago
Sorry to hear that - can you give me more info?
saikat192 months ago
It didn't worked fr me I''m using atmega 328-pu
MarkF72 months ago

If swapping back and forth gets annoying then you can just copy the entire section to a new one, give it an id of "m328pu" and a description of "ATMEGA328PU" with the appropriate fuse values. You can then edit your Arduino IDE "boards.txt" file and create a new board based on the Uno one with the mcu set to "atmega328pu". You'll then be able to select that device in your IDE Board list in addition to the regular Uno board.

AndyTallack (author)  MarkF72 months ago
Thanks Mark. I had tried that originally, but the GCC toolchain (as I understood) didn't support it. What version of the IDE are you using? I believe the new GCC toolchain now supports but haven't had a chance to test yet.
mbose23 months ago

Plz help me Sir, I have modified the conf file. But now on hitting arduinoisp, it says 'Expected signature for ATMEGA328P is 1E 95 14'.

AndyTallack (author)  mbose23 months ago
Hi

Does it tell you what the actual signature is?

Are you sure it is an ATmega328?

Thank you so much for replying Sir. That was my mistake. I'm now using IDE1.0.1(1.0.6 previously). The error now is unrecognized character : "P"

3suresh3 months ago

i made iiiiiiiittttttttttttttttt

mbose2 3suresh3 months ago

I get error message saying expected signature for ATMEGA328P is 1E 95 14, even after modifying the conf file. Do you know the solution Sir?

novianwf3 months ago

thanks a lot i want to try this

ShajeehM3 months ago

i m getting this error avrdude: stk500_getsync(): not in sync: resp=0x00 while burning the bootloader to atmega 8L-8pu can any one tell me how to burn bootloader to this chip

AndyTallack (author)  ShajeehM3 months ago

Sorry I don't have an ATmega8 to test this on, but should work - see the comments below on possible way to do this.

ShajeehM3 months ago

i m getting this error avrdude: stk500_getsync(): not in sync: resp=0x00 while burning bootloader to atmega8L-8pu can some one tell me how to burn bootloader and upload sketch to this chip

ShajeehM3 months ago

i m getting this error avrdude: stk500_getsync(): not in sync: resp=0x00 while burning the bootloader to atmega 8L-8pu can any one tell me how to burn bootloader to this chip

ShajeehM3 months ago

please navigate me the option to update my board.txt file .

ShajeehM4 months ago

can we bootload atmega 8 using the same procedure

AndyTallack (author)  ShajeehM4 months ago

Sorry I don't have an ATmega8 to test it on. Check the comments below - similar question there.

ok andy thanx for the reply i m going to bootload atmega 328 first using arduino hope this procedure will work


i need the avrdude file plz

AndyTallack (author)  shaditheman1234 months ago

http://download.savannah.gnu.org/releases/avrdude/

tsaltzman4 months ago

Thanks! Fixed my problem. :)

b33ma2474 months ago
I'm getting error 0x01e 0x96 0x14

I'm trying to boot load the 328-PU chip (on breadboard) with 328P-PU chip in uno r3

Have programmed uno (atmega328p-pu) as ISP bootloader

have changed hex value to 14 in avrdude.conf

Just get error on bootloading?
AndyTallack (author)  b33ma2474 months ago
Can you send the full error message?
Did you restart the Arduino IDE after you edited the avrdude.conf?

Cheers
Andy
ShreyasD15 months ago

Thanks !!

it worked at last

digonto.GL5 months ago

this really helped me a lot man . thanks a lot and briliant work boss

raja_sekharan8 months ago

Thank you, for the clear instructable. Keep up the good work !

nandan31019 months ago

Hey I tried a lot but it's not working I don't know why I have exactly followed your steps as you said then also it is showing me error again and again

Yikes! Invalid device signature.

Double check connections and try again, or use -F to override

this check. PLEASE HELP ME THANKS

AndyTallack (author)  nandan31019 months ago

Hi. Can you check which ATmega chip you are using?

Should we still use a 16MHz Crystal for pin 9 and 10???

1-40 of 66Next »