I am trying to use my Arduino Uno to program an ATMEGA328P, with the ultimate intention of disconnecting the Arduino and using the atmega on its own. However, I must have done something wrong. Details below, any guidance or suggestions are much appreciated!!!
I am using:
Arduino Uno, basically new
USB cable that came with the Arduino kit; was working just fine <1 month ago
ATMEGA328P (brand new, come with bootloader)
22 pF ceramic capacitors and 16 MHz crystal, etc.
What I did:
Removed the atmega from the Arduino using a flathead screwdriver to pry it out. Some scraping of plastic occurred, in addition to a couple bent pins, but nothing broken as far as I can tell
Under Tools>Board, I tried Arduino Duemilanove (and I also tried the Nano)
Under Tools>Processor I selected ATMEGA328P
Under Tools>Programmer, I tried a couple different ones but mainly Arduino as ISP
I followed instructions to the T, as far as I can tell, but it wouldn't work - not with any of the atmegas. (I tried the original atmega that came with the arduino, in addition to 3 brand new ones). Mostly, I got the 'programmer is not responding/out of sync' error message when I tried to upload. Power was going to my Arduino, as indicated by the LEDs, but nothing else happening...
So, at a loss, I put the atmega back into the Arduino, just to make sure everything was working okay. But now I can't even get that to work: the TX/RX lights do not turn on, and the computer does not seem to be able to communicate with the arduino. (Same error messages, programmer not responding, out of sync)
My questions/concerns:
Is it possible I damaged the microcontroller when removing it? (But that wouldn't explain the new ones not working either)
Is it possible I damaged the Arduino when I removed the atmega?
Is it very likely my USB cable isn't working properly, when it is clearly providing power, and it is basically new?
Am I doing something else wrong...?
Please help! Was just trying to get started on a project, and it's a real bummer when you can't even get past the first basic step
If any more information is required, please let me know.
Removed the atmega from the Arduino using a flathead screwdriver to pry it out. Some scraping of plastic occurred, in addition to a couple bent pins, but nothing broken as far as I can tell
Under Tools>Board, I tried Arduino Duemilanove (and I also tried the Nano)
Under Tools>Processor I selected ATMEGA328P
Under Tools>Programmer, I tried a couple different ones but mainly Arduino as ISP
Using 'Arduino as ISP' is for putting the bootloader onto a fresh ATMega and requires that the Uno still has its ATMega inserted in it. You also need to upload the 'Arduino as ISP' sketch.
If you've got the DIP version of UNO it's even easier. Put the chip in the UNO, upload program to chip, pull chip out of UNO and put into your breadboard with the program already on it.
BJHenry:
Using 'Arduino as ISP' is for putting the bootloader onto a fresh ATMega and requires that the Uno still has its ATMega inserted in it. You also need to upload the 'Arduino as ISP' sketch.
Okay, thanks, so if my atmega does already have the bootloader on it, which of the options on the Programmer pull-down menu should I be using?
mtolfa:
Okay, thanks, so if my atmega does already have the bootloader on it, which of the options on the Programmer pull-down menu should I be using?
(Pictures to follow shortly)
If you already have the bootloader you don't need to choose a programmer option- you aren't using a normal AVR programmer, you are using the bootloader.
mtolfa:
Okay, thanks, so if my atmega does already have the bootloader on it, which of the options on the Programmer pull-down menu should I be using?
(Pictures to follow shortly)
I still am not quite sure what exactly are you trying to do. Are you trying to program the chip with the chip out of the Arduino? Are you trying to use Arduino to program the chip? If you want to use the Arduino as a programmer to program another chip then the Arduino has to have a chip in it so it can run the Arduino as ISP sketch. If you just want to program that one chip then stick it in the Arduino and upload your program and then take it back out.
BJHenry:
Using 'Arduino as ISP' is for putting the bootloader onto a fresh ATMega and requires that the Uno still has its ATMega inserted in it. You also need to upload the 'Arduino as ISP' sketch.
Arduino as ISP isn't just for loading bootloaders. It is for using an Arduino as an ISP to program a chip. Whether that is burning a bootloader or uploading a program, either way. If you are using an Arduino to program a bare chip then you would still use this option.
Actually, if you want to upload a program with Arduino as ISP then you don't need a bootloader.
BJHenry:
If you already have the bootloader you don't need to choose a programmer option- you aren't using a normal AVR programmer, you are using the bootloader.
Yes, you always need to tell the IDE which type of programmer you are using to load a program. Same as when you burn a bootloader.
Delta_G:
I still am not quite sure what exactly are you trying to do. Are you trying to program the chip with the chip out of the Arduino? Are you trying to use Arduino to program the chip? If you want to use the Arduino as a programmer to program another chip then the Arduino has to have a chip in it so it can run the Arduino as ISP sketch. If you just want to program that one chip then stick it in the Arduino and upload your program and then take it back out.
I was trying to use the Arduino to program the chip; I only took it out of the Arduino beforehand because that's how I understood the website's instructions? (Pasted below). Simply uploading it through the Arduino, as you suggest, sounds so much simpler...
Unfortunately, however, this is a moot point now because after my failed attempts I put my chip back in the Arduino, and now I cannot get any programs to upload whatsoever. (Sorry for any confusion, I guess there are two separate issues here). I have tried with 4 different chips, and none of them will work, so I don't think they're the issue... is it possible I damaged the arduino by removing the chip?
Instructions: "Once your ATmega328p has the Arduino bootloader on it, you can upload programs to it using the USB-to-serial convertor (FTDI chip) on an Arduino board. To do, you remove the microcontroller from the Arduino board so the FTDI chip can talk to the microcontroller on the breadboard instead...."
OK, now we're getting closer. Now we know you're not trying to use Arduino as ISP but just trying to hijack the FTDI on the board.
Can you give like a real description of what you want to do. Like, the whole picture. What do you have? What do you want to do with it? It sounds like you either blew the bootloader and need to reburn it or you just have the settings messed up in the IDE. But I can't get a clear enough picture of what you actually have there to really help. Please don't send me across a bunch of links or try to include anything about the how you think it would be done. Just what you have and what you want to accomplish with it.
Thank you for your willingness to help!!! I'm happy to give you all the info.
As far as the instructions I followed, it did not say anything specific about the reset pin, but it did have me connect the reset pin as per the image here (about halfway down the page under the heading "Upload using an arduino board"
Anyway, as far as what I want to do:
I am trying to make a bike speedometer, and I was hoping to use the Arduino to program a smaller chip for this purpose. I have several new atmega chips that supposedly have the Arduino bootloader already uploaded. I also have the chip I removed from the Arduino.
If you mean to program a smaller chip like an ATTiny or something then use Arduino as ISP, forget the bootloader, and look up how to hook up that chip to the Arduino as ISP. Why waste space on a bootloader if you don't have to on smaller chips.
If you mean to put the program on a 328P, then just stick it in the Arduino board a upload to it there and then pull it out to put in your circuit. Will probably be easier during development to keep it in the board all the time and jumper your wires in until you get the program set in stone and then pull it out and hook it up to the real circuit.