Breadboard Arduino running at 3.3v

I am working on a project that will integrate a Atmega328P based Arduino. The display I am using is only available in a 3.3v version so I want to run the processor at 3.3v. The datasheet says that's fine for less than 10MHz and I am running with an 8MHz resonator. For some reason however, the thing runs great at 5v but fails at 3.3v. Any ideas why that would be?

The design is essentially the same as this one (but with an 8MHz resonator):
http://log.liminastudio.com/itp/physical-computing/breadboard-arduino-fast-cheap-and-fun
However, when I replace the v5 regulator with a 3.3v regulator, it will not boot or respond when I try to flash code to it.

Likely the issue is related to the brown-out detection settings for the chip. You may need to change the fuse settings:
http://www.ladyada.net/learn/avr/fuses.html
http://www.kerrywong.com/2012/02/19/atmega328-fuse-bit-setting-for-3-3v-vcc/
http://www.engbedded.com/fusecalc/

Thanks! Definitely sounds like I need to disable brownout detection. Do I need to do it when I burn the bootloader? If so, where do I enter the new fuse data? However, I can't seem to find a good guide on how, exactly, to program the fuses? Do you now of one?

the section at the bottom of this link
http://www.ladyada.net/learn/avr/programmers.html
on bootloaders says
Bootloaders also don't let you modify the fuses (discussed later) and they take up a portion of the flash memory so uploaded programmers must be smaller.

Hi I need to reprogram a Leonardo with the Bootloader.

I need an AS6 bootloader project, or a Hex file with fuse settings.

The Link at the top of the Arduino website called 'Bootloaders' with a list a link to bootloaders next to the respective products is missing.

vic320:
Thanks! Definitely sounds like I need to disable brownout detection. Do I need to do it when I burn the bootloader? If so, where do I enter the new fuse data? However, I can't seem to find a good guide on how, exactly, to program the fuses? Do you now of one?

I think the easiest / safest way to set the fuses to the correct settings for 3.3V / 8MHz operation will be to burn the "Arduino Pro or Pro Mini (3.3V, 8MHz w/ATmega328)" bootloader to your IC using an Arduino Uno as a programmer, or another compatible programmer.

If you are intending to run battery, then you should turn off BOD altogether.
https://www.sparkfun.com/tutorials/309

This doesn't sound to me like the BOD is the problem, unless it is set for the 4.3V level. If it is, you would know that because you probably would have had to make that setting.

New ATmega328Ps come from the factory with the BOD disabled, Arduinos come with them set for 2.7V. The fuse settings in boards.txt are the same for Uno, Pro/Mini 5V/18MHz and 3.3V/8MHz, all have the 2.7V setting.

So where did your ATmega328P come from? Does it have a bootloader?

What are you using for a power supply? Have you measured it, does it deliver something close to 3.3V while it is powering the circuit?

ralphd:
If you are intending to run battery, then you should turn off BOD altogether.
Reducing Arduino Power Consumption - learn.sparkfun.com

DIsagree. As usual, Nate is playing fast and loose. The ATmega328P has a nice feature in that the BOD can be disabled during sleep intervals, so that it does not continue to draw power while the MCU sleeps. It is re-enabled when the MCU wakes, to ensure sufficient voltage before execution continues.

The BOD is there for a reason. Operating the MCU with supply voltage too low for the clock speed can result in flash or EEPROM corruption. This is explained in the datasheet. It's probably more important to use it with battery powered projects.

That does look like a good idea. Wouldn't it be even better to only enable BOD for flash and eeprom writes?

ralphd:
Wouldn't it be even better to only enable BOD for flash and eeprom writes?

It depends on the application. For a given processor speed there is a minimum voltage at which the processor functions correctly. Going below that voltage can lead to fun things happening like 1 + 1 = 42. If your application can tolerate very erratic behaviour then turning the BOD off is an option.

ralphd:
Wouldn't it be even better to only enable BOD for flash and eeprom writes?

A 328P draws about 4mA at 3.3V and 8MHz (not counting additional circuitry, of which there is usually some). The BOD draws about 18µA, so less than 0.5% of the total, hardly noticeable. I can't imagine a situation where disabling the BOD would make a significant enough difference to the energy budget to justify the risks involved.

To be precise, figure 35-2 in the datasheet would put it closer to 3mA. And by turning things off with the PRR it should be possible to get below 2mA. Nevertheless, if it’s only a 1% saving then I’d agree it’s best to leave it on while the CPU is active, and only turn it off during sleep mode.