Burning Arduino bootloader to 3.3v 8MHz external crystal 328 via Uno

I've been following this but I've had zero luck: https://www.arduino.cc/en/Tutorial/ArduinoToBreadboard

Circuit is exactly as laid out. I've checked, double checked, fixed my reset resistor, and it's how it should be.

The board I've designed uses 3.3v and an 8MHz external crystal. This matches the Arduino Pro/Pro Mini 3.3v/8MHz profile, so I've been using that when attempting to burn the bootloader.

This is the error I'm getting:

avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x03

Is there a special step that I'm missing to get it to burn to a 3.3v setup? I came across this thread but still haven't had much success.

Any suggestions are greatly appreciated.

Decoupling capacitors are not recommended in the official Arduino instructions? That's kind of surprising. You should add 0.1uF caps to both Vcc-gnd and AVcc-gnd.

I think this is a good tutorial: http://gammon.com.au/breadboard

jboyton: Decoupling capacitors are not recommended in the official Arduino instructions? That's kind of surprising. You should add 0.1uF caps to both Vcc-gnd and AVcc-gnd.

I think this is a good tutorial: http://gammon.com.au/breadboard

It's a good tutorial, but it doesn't seem to have any option for a bootloader with an 8mhz external crystal, only the 16mhz external and the 8mhz internal.

I've tried both and while the program works and burns both uploaders, I can't get the FTDI to work to upload sketches to either.

EDIT: And now it's giving the Arduino IDE a fit when I'm trying to burn that bootloader because it now has the wrong signature.

The is incredibly frustrating.

It's a good tutorial, but it doesn't seem to have any option for a bootloader with an 8mhz external crystal, only the 16mhz external and the 8mhz internal.

So, burn the Lilypad (8 MHz) bootloader. Then tweak the fuse to use the external crystal.

And just how would I do that? I'm not particularly well versed in programming or fiddling with this stuff.

I'm really looking for a method that I can do, repeatedly, and not have to spend a lot of time doing each one. Yes, typical lazy, but I'll freely admit it.

Incidentally, the arduino instructions worked flawlessly with uploading to the 168 chips I have. They don't work with the FTDI chip I have on the board I've built either, though. I'm still checking a few things with that, but my main issue is burning the bootloader.

In my bootloader programming sketch, in the file Atmega_Board_Programmer.ino, around line 411, is the following:

    if (subcommand == 'L')  // use internal 8 MHz clock
      {
      Serial.println (F("Using Lilypad 8 MHz loader."));
      bootloader = ATmegaBOOT_168_atmega328_pro_8MHz_hex;
      newlFuse = 0xE2;  // internal 8 MHz oscillator
      newhFuse = 0xDA;  //  2048 byte bootloader, SPI enabled

You could just change newlFuse to whatever you want (probably 0xFF, which is the external crystal with maximum startup time). ie.

      newlFuse = 0xFF;  // external crystal

In fact, since that is the default for that chip, just delete (or comment-out) that line.

Excellent, much appreciated. In my frustration, I also didn't bother reading any usernames - That's a lot of work you did for people like me, and I greatly appreciate it!

I've discovered that the FTDI issues I was having are because I have the wrong FTDI chip for uploading to this board. When uploading to the chips via a breadboard tanglewire setup, it worked just fine. 5v FTDI chips don't work to upload to a 3.3v board (Also an obvious product of frustration. Isn't it wonderful how frustration leads to more frustration?)