UPDATE: This tutorial will work on Arduino IDE 1.0.1, the recent 1.0.5 makes some changes on the ISP sketch so I'm not sure if it will work (I just bought 2 ATMega328 and burned both on 1.0.1).

Please use 1.0.1 to eliminate any problems. Click Here

I had one remote controlled project that needed an Arduino running 24/7 but I didn’t want to leave my $32 Arduino UNO, so I decided to buy some pieces and created my own Arduino. The most important part was buying the microcontroller. These were my options:

ATMega328P-PU with Optiboot ~ $5.50 (Sparkfun) / $5.19 (Digikey)
ATMega328P-PU ~ $3.16 (Digikey)
ATMega328-PU ~ $2.88 (Digikey)

Obviously I bought the cheaper one, huge mistake. After some research I found that my first option was the straight one. Just plug it as a normal Arduino, the last two needed something else.

The last two options were missing something called a bootloader. A bootloader is “a small program that has been loaded on to the microcontroller. It allows you to upload code without using any additional hardware.”

So first if you were to do anything on those microcontrollers you need a bootloader burned on those chips. As you may have notice, the difference between the second and the third is just a mere P after the 328. This P means pico for picopower which is a technology ATMEL has developed that allows the microcontroller to run with less power.

Well if you see the microcontroller on your Arduino UNO you will find out that it is using the picopower micro, not the normal one. I bought 3 normal ones. OMG then I’m totally screw. Well no, you just have to make a pair of changes on your Arduino files to make it work. 

This tutorial will teach you how. 

Step 1: Materials

We will need the following materials:

1 USB cable to connect PC-Arduino
1 Arduino UNO (I’m using R1)
1 ATMega328-PU 
1 Small breadboard
1 16Mhz Crystal (mine had 20pF of capacitance)
2 22pFCeramic Capacitors

... And some jumper wires

<p>Excellent job making the board profile, by the way!</p>
<p>Hey everyone, Here's a permanent way to fix the programming issue with ATMEL328 and still keep your UNO (ATMEL328P) programmable. You want the ATMEL328 device signature to be a Diecimila. However, the Boards.txt file included with the standard copy of Arduino (1.6.3) has a typo, which you will have to fix if you want to seamlessly program your Diecimila with ATMEL 328 instead of ATMEL 328P. Here's how you do it:</p><p>1. Find your Arduino Application</p><p>2. Go to Java, then hardware, then arduino, then avr, then find &quot;boards.txt&quot;</p><p>3. Make a copy of &quot;boards.txt&quot; in case you mess up</p><p>4. Find the line in &quot;boards.txt&quot; that says:</p><p>diecimila.menu.cpu.atmega328.build.mcu=atmega328p</p><p>5. Backspace the &quot;p&quot; off of the line so it looks like this:</p><p>diecimila.menu.cpu.atmega328.build.mcu=atmega328</p><p>6. save the txt file, restart Arduino, and you're Done!</p><p>Please note: Using this method will not allow you to simply plug the ATMEL328 into an old UNO shield and have it programmable via the USB cable. You will have to use a number of workarounds or program via ISP. It is possible to make your own board profile if you really want to do this, but chances are the ATMEL328 is destined for something other than a regular Arduino board.</p>
<p>burning arduino bootloader with USBasp Programmer complete set by step guide</p><p><a href="http://openelectronicsproject.blogspot.in/2015/08/burning-bootloader-on-atmega328-using.html" rel="nofollow">http://openelectronicsproject.blogspot.in/2015/08/...</a></p>
Follow this procedures carefully to burn bootloader on newer IDE available now (In my case 1.7.5. but will work on your own).<br>&para; After making the connections as implied in this instructions.<br>&para; Open your IDE, on the top left corner, click on Tools &gt; Board &gt; Arduino Uno (if you are using ATMEGA 328P).<br>&para; Now click on Tools &gt; Port &gt; select your correct port (in my case i was COM24).<br>&para; Again click on Tools &gt; programmer &gt; Arduino as ISP.<br>&para;Finally click on Tools &gt; Burn bootloader.<br>Believe it after countless number of flashing it done.
<p>I'm also getting the &quot;Invalid device signature&quot; message. Verbose gives me the Device ID of 0x000000. Is my chip toast?</p>
<p>Yikes! Invalid device signature.</p><p> Double check connections and try again, or use -F to override</p><p> this check.</p><p>The connections are as per the diagram</p><p>I am using arduino 1.0.1 and atmega328 -pu .. i did not replace the files. please help. </p>
<p>avrdude: Yikes! Invalid device signature.</p><p> Double check connections and try again, or use -F to override</p><p> this check.</p>
This is because you are not using the arduino 1.0.1 version. If you use it to burn bootloader on atmega328 - pu you don't have to use the files attached
<p>I received the same message&gt;<br><br>&quot;avrdude: Yikes! Invalid device signature.</p><p>Double check connections and try again, or use -F to override</p><p>this check.&quot;<br><br>I used the arduino 1.0.1 version and i tried with and without the files attached.<br><br><br>=/</p>
<p>Thanks A bunch !</p><p>I followed the tutorial word-for-word and it worked. </p><p>Thanks Again</p>
<p>i followed all the steps...n finally when I try to upload the bootloader I get the following error::</p><p>Error while burning bootloader: missing 'bootloader.tool' configuration parameter</p><p>pls help me..</p>
<p>I guess you have used a newer version of the Arduino IDE. Make sure to use version 1.0.X !</p>
<p><strong>Other methods <br>did not work. The following one did.</strong></p><ol><li>Google search &ldquo;How to <br> burn bootloader&rdquo;<li>Goto: <a href="http://3g1l.com/blog-burn-bootloader-blank-atmega328atmega328p-arduino-uno" rel="nofollow">http://3g1l.com/blog-burn-bootloader-blank-atmega328atmega328p-arduino-uno</a> <br> read the document and comments. Follow the link or directly open the next <br> step.<li>Do the wiring as shown <br> at: <a href="http://arduino.cc/en/Tutorial/ArduinoToBreadboard" rel="nofollow">http://arduino.cc/en/Tutorial/ArduinoToBreadboard</a><li>Create a directory <br> named &ldquo;optiLoader&rdquo; preferably where your other Arduino or Processing sketches <br> are<li>Goto: <a href="https://github.com/WestfW/OptiLoader" rel="nofollow">https://github.com/WestfW/OptiLoader</a><li>Open &ldquo;optiLoader.h&rdquo;, <br> select all, paste in Notepad and save as &ldquo;optiLoader.h&rdquo; in the optiLoader directory <br> created in the previous step<li>Open &ldquo;optiLoader.pde&rdquo;, <br> select all, paste in Notepad and save as &ldquo;optiLoader.pde&rdquo; in the optiLoader <br> directory created in the previous step. Instead of &ldquo;pde&rdquo; you may give <br> extension &ldquo;ino&rdquo;, it doesn&rsquo;t make any difference<li>Open Arduino IDE, form <br> the IDE open &ldquo;optiLoader.pde&rdquo;. If you gave &ldquo;ino&rdquo; extension, you may <br> doubleclick the icon, it will open in Arduino IDE<li>Select the proper <br> board, COM port and upload the sketch<li>Open the Serial Port <br> Monitor. Set the baud rate to 19200. If the 328Pee Poo is good, <br> connections are good, you should see the success message as described in <br> the optiLoader.txt file<li>If you need more 328P <br> PU to program, insert next one press &ldquo;G&rdquo; in the serial port, monitor <br> window, press enter.</ol><p><strong>Note:</strong></p><p>i) You NEED the oscillator and the capacitors.</p><p>ii) Copy, paste and save the &ldquo;optiLoader.txt&rdquo; just for reference. <br>It is not necessary though.</p><p>iii) If you download optiLoader-master.zip, you will get all three <br>files.</p><p>iv) If the baud rate is not set to 19200, garbled message is <br>received.</p>
<p>When I try to upload the bootloader I get the following error:</p><p>avrdude: Expected signature for ATMEGA328 is 1E 95 14</p><p> Double check chip, or use -F to override this check.</p><p>I use an ATmega328P-PU. What I do wrong?</p>
<p>I have the same problem. It was solved by adding external power supply to my UNO</p>
<p>Hi,</p><p>I followed all the steps and instructions posted here and I couldn't burn the Atmega328, I got this &quot;MCU 'atmega328' supported for assembler only- unknown MCU 'atmega328' specified&quot;. I'm using arduino IDE version 1.0.1 and arduino board R3. What can it be the problem?</p>
<p>i did that with atmega328p-pu</p><p>but it didn't work on it there was an error althought the wiring diagram was right !!!</p>
<p>How do you download the files in the article? Sorry for my ignorance but I can open the text and copy paste, (will that work)? how do I get the rar down?</p>
I use winrar but even still you should be able to download it and right click and extract the files. For the boards file I just opened the original selected all and pasted over everything from the Web page itself.
Thanks for that, I did get it down by changing browsers from IE to Chrome. Usually right clicking on component would give a menu with option of downloading but in this case not. Chrome simply downloaded it. I am however seeing conflicting statements in articles regarding the process of installing the bootloader, One article on the Arduino.cc website says that it works with the Duemilanove, and won't work using the Uno. I wanted to use the method using the chips internal clock since I'm still waiting for the necessary capacitors to add the external. but now I'm not sure it will work....any insight would be appreciated.
<p>Sorry for the broken up/late reply to your question, but about the capacitors i'm going to take a shot in the dark. try using different value caps but as close as possible to the 22pF's. the crystal should be looking at them as in a series so i want to say by that each side is utilizing roughly 11pF (give or take) but keep in mind the probability of any stray capacitance (we'll just say around 9pF), I'm assuming the 22pF value was selected to take all that into account so it wouldn't be overwhemling nor being stingy with what it actually needs.</p>
<p>Where can I find the two files which are attached (avrdude.config and boards.txt) ?</p><div>I can't find them.</div>
<p>They're under the steps 1 - 9 on this page. </p><p>http://www.instructables.com/id/Burning-the-Bootloader-on-ATMega328-using-Arduino-/step4/Preparing-the-software/</p>
<p>How do you get them down clean if I click on them they open. The rar being compressed is well compressed lol.</p>
Hello <br>I need to burn the Atmega328p-pu with arduino uno r3, and arduino 1.0.5 IDE or 1.0.1 When i try to upload the Arduino ISP sketch, Error happen this is <br> <br>avrdude: stk500_getsync(): not in sync: resp=0x00 <br>please help me I follow the instruction in the above and other fourm <br> <br>my email kaledawitesmelealembd(at)gmail,com <br>
<p>I'm sure by now you have already figured something out but I'll post a reply any ways.... </p><p>Make sure you selected &quot;Arduino as ISP&quot;</p><p>Make sure the files he provided overwrites the originals and try selecting board type as &quot;Arduino UNO&quot; (not 328). </p><p>Worked for me flawlessly using the R3 board and the same chip you mentioned.</p>
<p>My 328p-pu probably came with the bootloader, but on uploading sketch it says yikes! invalid device signature and double check connections.Even on burning bootloader it gives same error. plz help me sir. It's urgent. </p>
Do You know if you ordered it pre-loaded or not? Are you able to upload a sketch to it if you put the chip on the actual arduino board itself?
<p>It is written on the product description on amazon that it has a bootloader on it. Is it possible that it has a bootloader of some different board configuration like duemilanove or decimilia. Also, I have not put the chip on actual board itself. I am afraid the real arduino uno chip's pins might get damaged if I take it out. If that happens I will be left with nothing. But still, do you recommend taking the chip out and trying my bought one on the uno?</p>
I don't see how it would hurt to try. It would also verify if they actually shipped it to you already loaded. If all else fails and you're still attempting to load it. Go here and skip down to step 6 and see what results you yield. <br>http://m.instructables.com/id/Bootload-an-ATmega328/all/<br><br>I'll try and get online on an actual PC soon and have a look around a bit more when I get a chance. <br>
<p>maybe you connect wrong the voltage or your chip broken</p>
<p>did u get any solution..??</p>
<p>Does it run on OS X?<br>I'm getting</p><p>avrdude: parallel port access not available in this configuration</p><p>avrdude: error at /Applications/ArduinoBurn.app/Contents/Resources/Java/hardware/tools/avr/etc/avrdude.conf:727: programmer type not specified</p>
<p>Can i use Arduino Revision 3?Thats my only arduino.........</p>
<p>Yes, just be sure to download the older version of the IDE and select board type as &quot;Arduino UNO&quot; (not Arduino 328) assuming you're using a ATMEGA328P-PU (not sure if it matters)</p>
<p>Awesome instructable ! Let the prototyping commence.........</p><p>(excuse the horrid breadboard, at least it works)</p>
<p>im using arduino 1.0.5 (i know u said its better to use 1.0.1)and im getting the error:&quot;use -F to override this check&quot; .... what does it mean and how to solve it ?</p>
<p>Rename your &quot;Arduino&quot; folder so that nothing is overwritten/merged with the old version. Download version 1.0.1 and follow the instructable. It worked fine for me when I chose Board &quot;Arduino UNO&quot;, not &quot;Arduino 328&quot; using chip ATMEGA328P-PU.</p>
<p>Mine worked perfectly!</p>
<p>Where did you find the attachments??</p>
<p>They're under the steps 1 - 9 on this page. </p><p>http://www.instructables.com/id/Burning-the-Bootloader-on-ATMega328-using-Arduino-/step4/Preparing-the-software/</p>
sir i didn't find the arduino328 as you have given instructions (step 5) from tools&gt;board ... <br>can u help me, am using the latest version of arduino 1.0.1
I had the same problem then I happened to go through the process again without the Arduino connected to the computer and arduino328 was at the top of the list. I am still getting the &quot;invalid device signature&quot; error when I try to burn. It says I can over ride this check using -F but I do not understand how to do this.
<p>I cant find 328 from boards menu as it doesn't open. I know you had this problem over a year ago, but can you walk me through the process, like when do you disconnect the arduino and 328 comes on list. It's urgent Sir..</p>
<p>I have done every thing but it shows invalid device signature. screenshot is attached. plz help me to burn atmega328p using the UNO board.</p>
<p>I have done every thing but it shows invalid device signature. screenshot is attached. plz help me to burn atmega328p using the UNO board.</p>
<p>I have done every thing but it shows invalid device signature. screenshot is attached. plz help me to burn atmega328p using the UNO board.</p>
<p>I have done every thing but it shows invalid device signature. screenshot is attached. plz help me to burn atmega328p using the UNO board.</p>
<p>I have done every thing but it shows invalid device signature. screenshot is attached. plz help me to burn atmega328p using the UNO board.</p>
<p>I have done every thing but it shows invalid device signature. screenshot is attached. plz help me to burn atmega328p using the UNO board.</p>

About This Instructable


389 favorites


More by manu08: Burning the Bootloader on ATMega328 using Arduino UNO as ISP
Add instructable to: