ATMega328P on BB, no sign of life

After two weeks of reading forums and instructions, I've had no luck programming ATMegas. I am trying really hard to program the ATMegas on a breadboard using my Arduino as ISP. If this is possible, then what is the point in buying a USB chip programmer? Here's roughly what I've done (skip ahead to questions if you're busy / a super genius!):

Originally, I didn't have a crystal oscillator so I wanted to use the 8MHz internal clock by disabling the divide-by-8 bit and using my Arduino as the external clock. Thanks to some advice, I downloaded Nick Gammon's well-written Chip Programmer sketch off of his website http://www.gammon.com.au. I highly recommend this as a bootloading method for anyone who is just starting, and while I believe it worked (the output verified no errors) I'm not entirely sure.

I finally gave up on the 8MHz internal clock because the chip was seemingly doing absolutely nothing. I bought a 16MHz crystal oscillator and two 22pF capacitors as recommended by most of the Arduino as ISP tutorials. I hooked them up as instructed. First I tried the bootloader via the Arduino GUI; no luck. Back to Nick Gammon's bootloader, this time uploading the Uno (16MHz) sketch, and for the first time there is a sign of life. Chip pin d13 (pin 19?) was blinking slowly. With no sketch uploaded thus far, I read that this was the bootloader indicating it was "ready." Great!

Before uploading any sketches, I bootloaded 3 more chips because this is what I assume needs to be done before you can upload sketches (I have since read otherwise?). After bootloading the rest, I noticed that the clock byte in the serial monitor was different for each chip. This was my first indication something is not right, but maybe that is normal. I have no idea. The chips inexplicably no longer blinked pin d13, not on external power, and not on Arduino pin-power (with Arduino powered by USB).

  • I'm sure the chip has been wired correctly to the Arduino, I have tried both the standard MISO/MOSI/SCK/G/VCC pins and the ICSP variety on my board.
  • I have an OSEPP Uno R3 Plus board that I'm using as my programmer. The ATMega on it cannot be easily removed. I have been using a capacitor between reset and ground (although Ive tried other suggestions such as jumping reset to ground, and a resistor between reset and ground).
  • I've tried programming the board chip by having the ISP sketch on the Arduino, and then uploading a sketch using the AVRDUDE command line because I read that I might have to use a specific baud rate (19200?). Didn't work (although something responded!).
  • I can't think of anything else that tutorials have suggested, but chances are I've tried it.

[u]Questions![/u] 1. I read that mishandling chips can "zap" them, which I assume is a cute way of saying "destroy." Is there any way to tell if the chips are completely bricked? I have handled them carefully with rubber clips so I doubt this is the case.

  1. Almost every error it has spit out so far is out of sync, although I think after using the avrdude command line for the right baud rate, I believe the error was invalid signature. Does the baud rate my PC is outputting have to match the expected baud rate of my Arduino, the chip on breadboard, or both?

  2. If I do give up and buy a USB chip programmer, what are the chances it will succeed at programming the ATMega vs. Arduino as ISP? I have read about an equal amount of success/fail stories using USB programmers as I have Arduino as ISP stories.

  3. Are there any other simple alternatives to the ATMega that I could program using my Arduino in order to get a programmed chip inside a project I'm working on? I know there are lots of microcontrollers out there and at this point I'd love to try anything other than hooking up the same chip the same way and getting the same error.

Thanks in advance to anyone who can offer any help! I'm sure everyone's been here at some point because there are endless threads about this, but everyone has such a different setup that the solutions will vary just as much. I think the only thing unusual about my setup is the OSEPP Arduino, maybe, or possibly that I'm using the most recent Arduino IDE? I have no idea. I can fill in any details that I forgot to mention here, just ask.

Thanks!!

I have had no problem programming Atmega328s using these instructions. I have only used them with the 8MHz internal oscillator.

http://arduino.cc/en/Tutorial/ArduinoToBreadboard

...R

Robin2: That was the very first tutorial which inspired me to buy some ATMega chips, but as I said before I cannot remove the microcontroller from the Arduino which would be doing the programming, so I used the 2-3 other methods people suggested of bypassing the Arduino's ATMega. I don't know if the mega on the Arduino was bypassed or not because the entire process fails at an error or two.

I use an Atmel AVR ISP to program blank chips. All '328Ps are bootloaded as Uno's with 16 MHZ crystal and 22 pF caps, 10K reset pullup resistor, and 100nF caps on Vcc/AVcc to Gnd. I burn the bootloader from the IDE so the fuses are set correctly for 16 MHz operation. Serial downloads then follow. If you're planning on doing more than 1 project, having standalone tools is worth it.

Alright well I'm a sucker for punishment but it doesn't make sense to keep trying Arduino as ISP; I'm guessing the AVR ISP I'd need is something like this? http://www.digikey.ca/product-detail/en/ATAVRISP2/ATAVRISP2-ND/898891

Again, I would need to program the chip on a breadboard since the Mega on my OSEPP is not easily removed. Can I do that with a USB AVR ISP without mangling it? Might be a silly question, but I'm a programmer and not the most graceful engineer - I just wouldn't want to damage a new $50 AVR ISP.

Speaking of which, any cheaper alternatives? I know there are lots of knockoffs for pretty much any component you might seek...

Thanks again

Try this tutorial http://3g1l.com/blog-burn-bootloader-blank-atmega328atmega328p-arduino-uno. You can modify this to program the Atmega328 with any sketch you want.

I build a Arduino clone myself with the help of this tutorial and the Shrimp.it blog. I have tried this many times, it works.

And I have wrote a compilation of all of such resources in my blog http://mypythonprojects.blogspot.in/2014/01/make-your-own-cheap-and-customizable.html.

And another very good read: http://www.gammon.com.au/forum/?id=11637

Everyone likes different toys, but this works great for DIP and can be mod'd for tiny, too. https://www.adafruit.com/products/462

Ray

Go with Mouser.com
http://www.mouser.com/ProductDetail/Atmel/ATAVRISP2/?qs=%2Fha2pyFadujqFzV%2bExzQOlFEGuFbE5zkYm9OzGvRqkjeoy23MLFzjw%3D%3D
Do not install the Jungo driver.
Install the driver that is provided with the IDE

@mrburnette I like the $20 pricetag, comes with a free chip, but I'm really having trouble with Arduino as ISP so I don't think that would work, otherwise I'd get it hands down (I like the chip dock thing!)

@CrossRoads I will probably drop the $45 on the AVR ISP, but since we're on the subject, if for some reason I wanted to use a non-Atmel chip in the future, this ISP would be of no use, correct? Other than that it can program any Atmel chip?

ATYPICAL: After two weeks of reading forums and instructions, I've had no luck programming ATMegas. I am trying really hard to program the ATMegas on a breadboard using my Arduino as ISP. If this is possible, then what is the point in buying a USB chip programmer?

For one, debugging, assuming you want to use Atmel Studio at some point.

what is the point in buying a USB chip programmer?

See all the threads from folks who can't get Arduino as ISP working. I personally don't have time to mess with that. I plug USB cable into PC, I plug MKii onto a board, and it works every time. '328P, '1284P, '2560.

ATYPICAL:
Speaking of which, any cheaper alternatives?

my favorite is ebay usbasp for 2$-3$. i found it more reliable and easier to use than my dragon or mkII not to mention you can buy a dozen or more for the cost of one of those. arduino as isp would be my second choice.

maybe try simple blink program before getting into bootloaders. if that works then the problem is unlikely the programmer.