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 70Next »

Thanks a lot

gewkwn1 year 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.

Hey thanks man... This is a great help to me. I had an ATMEGA 328-PU and I was in problem of burning bootloader. This is working. Thanks a lot....

AndyTallack (author)  kamalpancholi11 days ago

Excellent! Pleased it helped and salvaged your 328-PU chips!

danis.dan.512 days ago

1) Uploading sketches in such a way (with the bootloading way) does mean that the bootloader will be erased after uploading a sketch, doesn't it? We just do that for fuses etc?? Could we upload a sketch without before burning the bootloader on our (breadboard) chip?

2) Using FTDI u mean w remove the chip from the Arduino Uno and programming via Rx and Tx pins, remaining/leaving the same "Arduino on a breadboard" circuit as it is?

JPS22 months 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)  JPS21 month 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.

gLorieul1 month 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)  gLorieul1 month ago

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

Thanks for the info!

saikat193 months ago
It didn't worked fr me I''m using atmega 328-pu
AndyTallack (author)  saikat193 months ago
Sorry to hear that - can you give me more info?
saikat193 months ago
It didn't worked fr me I''m using atmega 328-pu
MarkF73 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)  MarkF73 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.
mbose24 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)  mbose24 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"

3suresh4 months ago

i made iiiiiiiittttttttttttttttt

mbose2 3suresh4 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?

novianwf4 months ago

thanks a lot i want to try this

ShajeehM4 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)  ShajeehM4 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.

ShajeehM4 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

ShajeehM4 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

ShajeehM4 months ago

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

ShajeehM5 months ago

can we bootload atmega 8 using the same procedure

AndyTallack (author)  ShajeehM5 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)  shaditheman1235 months ago

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

tsaltzman5 months ago

Thanks! Fixed my problem. :)

b33ma2475 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)  b33ma2475 months ago
Can you send the full error message?
Did you restart the Arduino IDE after you edited the avrdude.conf?

Cheers
Andy
ShreyasD16 months ago

Thanks !!

it worked at last

digonto.GL6 months ago

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

1-40 of 70Next »