Running atmega 328p on 3.3 v

Hi all! I want to run atmega 328p on 3.3v for my project and for doing the same I gathered some information. As far as I understood, I will have to program the extended fuse bits of the 328 so that i can disable brown out detector (BOD), so that I can run the chip on 3.3V and I will have to program the low fuse bits for the clock if I want to use an external clock of 8mhz (8 mhz coz it is recommended that for voltage of 3.3V the clock should be set at less than 10 mhz). However, when I read the datasheet of 328 chip, i found that the BOD is disabled by default (pg 296 and 320), and that if an external clock is not used then the chip uses its default internal clock of 8 Mhz. All this is for a case when I have not burnt the bootloader into the chip . I guess the bootloader changes the fuse settings, for an external clock of 16 mhz and BOD is enabled. These were the observations when I ran a bootloaded as well as not bootloaded chip on a breadboard with the blink program in both the chips OBSERVATIONS 1.a bootloaded chip with bootloading done for uno, does not run without external clock. Probably because the fuse settings done by the bootloader demand an external clock. 2.a bootloaded chip also does not run on 3.3V, again probably because of the fuse settings done by the bootloader. 3.a non bootloaded chip runs at 3.3v as well as 5v but it runs only in presence of an external clock(i tried 16 mhz), but does not work when the clock is removed.

Now comes the list of questions - 1. In case of non bootloaded chip, why does the chip demand an external clock? Why is it not using its internal clock? 2. Am I right about the inference i made in the first two observations? 3. What is the best way to program a chip such that it uses 3.3V , with an external clock. 4. What is the best way to program a chip such that it uses 3.3V, using it's internal clock.

Here is a link to the datasheet - http://www.atmel.com/Images/doc8161.pdf

  1. What is the best way to program a chip such that it uses 3.3V , with an external clock.

Select ProMini, 3.3 V 8 MHZ for board type, burn bootloader.

CrossRoads: 3. What is the best way to program a chip such that it uses 3.3V , with an external clock.

Select ProMini, 3.3 V 8 MHZ for board type, burn bootloader.

@crossroads I did that, and i found this 1. the clock got set to 8mhz, i used the blink program to check it (used a 16Mhz crystal, blinking occurred at twice the speed) 2. the chip still does not work at 3.3V, although it works perfectly at 5V

How is power connected? Right to the VCC/AVCC pins? I run a 8 MHz promini in a remote control from a 1000mAH Lipo battery like that, connected to the VCC pin, goes for a month or more between rechargings. Battery is up to 4.2V charged, and supposedly down to 3V when low - never measured it.

well, I placed the chip on the breadboard , and am giving power via the 3.3V on the arduino. Would the external clock being 16MHZ have anything to do with this problem? also, when we use this method, does the booloader really get burnt into the chip, or it just sets the fuse bits? I am asking this because I cannot program the chip using arduino directly anymore, I have the use my usbasp programmer. However if i reflash the bootloader for the arduino uno, then i can program the chip using arduino again.

3.3V & 16MHz - not a good combination. Am sure that impacts sketch downloads too - mismatch in serial rates. Programming via the SPI pins overcomes that. Go spend 30 cents http://www.dipmicro.com/store/index.php?act=viewProd&productCode=XC6-80000 or less! http://www.taydaelectronics.com/8-000-mhz-8-mhz-crystal-hc-49s-low-profile.html

and get the right crystal. Dipmicro is by Niagara Falls, very inexpensive shipping.

@crossroads It has started working, seems like there was some issue with the connection on the breadboard, but i figured if it was working with 5V, then the connections should be fine. Anyways, can you or anyone else reading this please answer the following - 1. a virgin chip, has its fuse settings to use it's internal clock, as well as BOD disabled, yet it does not work without an external crystal, nor does it work at 3.3V. Why? 2. when we burn a bootloader of another board using arduino IDE, does it really burn the bootlaoder, or it just sets the fuse settings? Coz I cannot use arduino uno tho program the chip unless the bootloader if of uno. It might be because of the mismatch in serial rates as you just mentioned. And yes I will buy 8Mhz crystals, thanx for the sites. :). However the error I get is that it is not in sync, an error usually encountered when the bootloader is not there, plus I read on some site that the bootloader does not really get burnt this way. 3. Any kind of headstart on how to burn fuses without using the arduino IDE, so that I can use the internal clock of the chip, timing is not that important for me.

satinssoldier: Anyways, can you or anyone else reading this please answer the following - 1. a virgin chip, has its fuse settings to use it's internal clock, as well as BOD disabled, yet it does not work without an external crystal, nor does it work at 3.3V. Why?

A virgin chip runs at 1MHz (8MHz internal oscillator with prescaler of 8 ).

satinssoldier: 3. Any kind of headstart on how to burn fuses without using the arduino IDE, so that I can use the internal clock of the chip, timing is not that important for me.

See the last part of https://miscsolutions.wordpress.com/2011/08/09/prototyping-small-embedded-projects-with-arduino/.

Atmega328p 8MHz Internal w/o Brownout Detection:

lfuse 0xE2, hfuse 0xDA and efuse 0xFF

I use the following fuse settings:

EXTENDED 0xFF HIGH 0xD9 LOW 0x62

I then use the "Lillypad Arduino w/ATmega 328" board option fro programming. To get the delay() timing right, I modified the Boards.txt file for this option so that the entry lilypad328.build.f_cpu=1000000L

This is for an Atmega using the internal oscillator at 8 Mhz divided down to 1 Mhz by the prescaler of 8. There is no bootloader and sketches need to be programmed with ISP programmer.

Hi guys,

I trying to run an standalone Atmega328p with 3.3v and external clock (8Mhz).

i followed the CrossRoads's way that is burnbootload "ProMini, 3.3 V 8 MHZ" board first.

i use an USBISP interface to do it and i feed it with 3.3v.

Unfortunatly after burnbootload, i upload "blink" sketch to test it and i haven't any sign of good work except in 5v.

What am i doing wrong ?