ATMEGA328p not working at 3.3v

I placed an ATMEGA328 TQFP on a PCB and set connections to bootload it and program it.

In order to bootload it, I used an arduino as the bootloader with no external crystal via this tutorial here:
http://www.bashmodulo.com/arduino/burn-arduino-atmega-bootloader/
I downloaded Arduino 0022 to do this, as I had issues with editing the board.txt file in the Arduino 1.5.8 directory.

Bootload was successful, and the next step was to program it using an FTDI adapter, which I did via this tutorial here:

This was also successful as I was able to upload a simple blinky program to it. But now my issue arises when I try to switch to power the ATMEGA at 3.3v. It does not turn on and operate the blinky program. But it always turns back on when I power it with 5v.
Why is this? Is the voltage you program the chip at the same voltage needed to power it? Does it have something to do with bootloading it at a certain voltage?

How can I set this up such that I can run the circuit at 3.3v? I need to do so instead of 5v as I utilize a sensor device that runs at 3.3v.

Both 328p/1284p work fine at 3.3V and at 16MHz or less. What is your crystal there?

pito:
Both 328p/1284p work fine at 3.3V and at 16MHz or less. What is your crystal there?

It should be running at 8Mhz, I have no external crystal in the circuit.

The frequency of internal "8MHz" oscillator varies with the voltage. It is set by manufacturer to 8MHz at 3.0V.
So the clock frequencies at 3.3V or 5.0V will be different.
The blink shall work at both voltages, what could be an issue is the Serial, which reliability depends on the proper clock frequency. So the serial upload may not work.
What is your upload serial speed there?
Is your chip a 328 or a 328p ??

What are the fuses set to?

Could you have left BOD enabled?

I had the same problem recently and almost made a post on here about it. Turned out my problem was the 3.3V output from my USBasp. It worked fine at 5V and at 3.3V it would program it but woulsnt run properly. Switching to battery supply of 2.8V and it worked fine.

pito:
The frequency of internal "8MHz" oscillator varies with the voltage. It is set by manufacturer to 8MHz at 3.0V.
So the clock frequencies at 3.3V or 5.0V will be different.
The blink shall work at both voltages, what could be an issue is the Serial, which reliability depends on the proper clock frequency. So the serial upload may not work.
What is your upload serial speed there?
Is your chip a 328 or a 328p ??

It is a 328p. I have not yet tried to run it at 3V. I'll see if I can try it today

I had a similar problem.

Turned out I was only providing +3.3v to pin 7 on the 328, not pins 7 and 20.

duh@me

Funnily enough it works fine from 3.3v on just pin 20.

On a related note, it appears any remotely recent version of the arduino ide doesn't have correct fuse settings for the internal 8mhz oscillator under lilypad and such. Nick Gammon has a page discussing using bare chips at

and wrote several VERY useful sketches, one of which burns a working lilypad bootloader to a connected chip.

danielMRV:
I placed an ATMEGA328 TQFP on a PCB and set connections to bootload it and program it.

In order to bootload it, I used an arduino as the bootloader with no external crystal via this tutorial here:
http://www.bashmodulo.com/arduino/burn-arduino-atmega-bootloader/
I downloaded Arduino 0022 to do this, as I had issues with editing the board.txt file in the Arduino 1.5.8 directory.

Bootload was successful, and the next step was to program it using an FTDI adapter, which I did via this tutorial here:
https://www.youtube.com/watch?v=R_BwSGH1Xjc

This was also successful as I was able to upload a simple blinky program to it. But now my issue arises when I try to switch to power the ATMEGA at 3.3v. It does not turn on and operate the blinky program. But it always turns back on when I power it with 5v.
Why is this? Is the voltage you program the chip at the same voltage needed to power it? Does it have something to do with bootloading it at a certain voltage?

How can I set this up such that I can run the circuit at 3.3v? I need to do so instead of 5v as I utilize a sensor device that runs at 3.3v.

Try setting your oscillator to full swing mode (set bit 3 (CKSEL3) of the low fuse to 0). Typically, this is changing LFUSE from 0xFF to 0xF7. This will make your crystal oscillator a LOT more robust.

Edit: My post was not applicable. Noticed that the OP is using the internal oscillator.

rc31o5:
On a related note, it appears any remotely recent version of the arduino ide doesn't have correct fuse settings for the internal 8mhz oscillator under lilypad and such. Nick Gammon has a page discussing using bare chips at

You can use MCUDude's MiniCore for bare/custom '328p based projects - it has support for that.

krupski:
Try setting your oscillator to full swing mode (set bit 3 (CKSEL3) of the low fuse to 0). Typically, this is changing LFUSE from 0xFF to 0xF7. This will make your crystal oscillator a LOT more robust.

Edit: My post was not applicable. Noticed that the OP is using the internal oscillator.

You realise that you replied to a post that is over 4 years old :wink:

sterretje:
You realise that you replied to a post that is over 4 years old :wink:

I do now that you mentioned it! :slight_smile: