How to put ATmega328P to work with 2V?

I recently decreased the clock of the chip (2MHz now) in order to also decrease the power supply voltage. The datasheet of the chip states that at this frequency we can go up to 1.8V.

However, my measurements is showing me that the chip only works up to 2.76V. My tests were realized with: ATmega328P with Arduino bootload, customized board (no external hardware, except the extremely necessary to boot the chip), 2MHz external clock, a LED/resistor at pin 19, and a blink program.

The same Atmel datasheet (8271C-AVR-08/10) states at pp.321 that "values with 'Minimizing Power Consumption' enabled (0xFF)". Where I setup this? Any hint?

Thanks

There is a Power Reduction Register on page 45 which shows you what bits shut down what modules. Writing 0xFF to this shuts them all down.

However, my measurements is showing me that the chip only works up to 2.76V

"Up to" or "down to"? Are you trying to get the ATmega328P to run at a voltage lower than 2.76V?

If memory serves the Brown Out Detection is set to 2.7volts so you'll need to change the Fuse settings.

Depending on the fuse settings it can be in the range 1.7 to 2v 2.5 to 2.9v 4.1 to 4.5v or disabled. I thought it was disabled by default.

Thank you all for the help!!

I just disabled BODLEVEL fuse (Brown-out detection) and it worked fine!!!

The chip is working "down to" 1.78V!! At this voltage, it is really hard to see the blinking, but carefully checking the blink timing it is possible to conclude that the chip is working perfectly.

Additional note: I am using AVR Studio 4 to make the fuse programming (tab "Fuses", EXTENDED=0xFF or, if you prefer, just select BODLEVEL and mark as disabled).

Thanks.

If memory serves the Brown Out Detection is set to 2.7volts so you'll need to change the Fuse settings. I thought it was disabled by default.

Depends on the board. I think the LilyPads have it disabled. I know some of the boards are at the 4.x setting.

The chip is working "down to" 1.78V!!

I believe that the EEPROM and Flash cannot be reliably written if the voltage is too low. Be sure to check the datahsheet if you plan to do either.

I believe that the EEPROM and Flash cannot be reliably written if the voltage is too low.

He should be safe if he turns BOD back on and sets it to the lowest setting.

Actually my solution writes at FLASH in rare cases. Therefore, I need to check this aspect in the next days.

Question: how the disabling of BOD impacts the performance of the chip? May it also affect Flash operations?

Tks

Question: how the disabling of BOD impacts the performance of the chip?

It consumes power. It holds the processor in reset if the voltage is too low.

May it also affect Flash operations?

Check the datasheet.

I thought turning off the brown-out detection would be a bad idea since at too low voltage the fetched instructions could be corrupted and suddenly a friendly instruction turns into a FLASH write, that can corrupt the FLASH.

From the '328 datasheet...

A Flash program corruption can be caused by two situations when the voltage is too low. First, a regular write sequence to the Flash requires a minimum voltage to operate correctly. Secondly, the CPU itself can execute instructions incorrectly, if the supply voltage for executing instructions is too low.

And, there are claims on AVR Freaks of corrupt Flash from low voltage.

Secondly, the CPU itself can execute instructions incorrectly, if the supply voltage for executing instructions is too low.

But what do they mean by "too low"? Lower then the specified minimum operting voltage vs some speed, or some higher value?

Lefty

I haven't been able to find a definition for "too low". Not in the datasheet nor on AVR Freaks.

Typically, the stuff on AVR Freaks seems to include extunuating circumstances: specific processor / problem disappeared with a "modern" processor; suspicious supply voltage (e.g. spikes); potential bootloader issue. But I can't find anything about specific voltage levels.

Atmel seems to be [u]very[/u] conservative when they publish specific numbers. I highly doubt there are problems within the specified operating ranges (1.8 - 5.5 for the '328 @ whatever speeds are in the datasheet).

"Overclocking" seems to be rather popular. Maybe that's part of the issue? The combination of low-voltage / high speed clock?

Anyone have time to run some experiments? ;D

Thanks for the explanations. based on your comments, I believe that it would be important to establish a long-term experiment to achieve the final answer for this thread.

I believe that 1.8V is the manufacturer limit and therefore it is too critical for normal operations. Therefore, I would like to establish 2V as a "secure/reliable" limit. I am following now the datasheet and using a 2MHz clock to realize the use of this voltage. The main question is, under these conditions, do we have a secure/reliable operation of the ATmega328P chip with 2V?

To answer this question, I will create the following testbed and proceed as follows:

1) Testbed with 2 distinct boards/chips: 1.1) Board#1 will run ADC tests, math calculations, timer, and 9600bps serial communication operations. 1.2) Board#2 will run the same app as #1 plus write/read Flash operations.

2) External 2.0V power supply for each board.

3) 24h-test with external logging via serial interface to a PC.

If the results are successful (no interruption in a sequence of numbers with timestamp), my final intention is to create my own BOD scheme with one ADC channel which will check the battery voltage. The trigger will occur when the battery goes equal or below 2V.

I cannot use BOD because I MUST LOG the bad battery status (it is an application requirement) and not only allow an automatic RESET operation provided by BOD.

In this way, when the battery goes equal or below 2.0V (frequently checked), my program will save/log this fact at the Flash and will enter in an endless loop. I have already an external watchdog hardware which, when not regularly "refreshed" by the main program, will cause a continuous RESET of the MCU. This will occur after some seconds following the low battery detection. Therefore, no Flash corruption will occur from that point on. I believe that this design is enough for my needs.

Any additional ideas/comments are welcome guys!!

Tks

my final intention is to create my own BOD scheme with one ADC channel which will check the battery voltage

Don't use the DEFAULT analog reference if you're using a single 2V supply for your circuit as it will not work.

I believe that 1.8V is the manufacturer limit and therefore it is too critical for normal operations

I disagree. I believe that when Atmel publishes numbers (like 1.8V to 5.5V) they are making a guarantee that the processor will work reliable when used under those conditions. In other words, I believe that Atmel has guaranteed that your test (2 V, 2 MHz) will pass.

I suggest letting the test run to just below 1.8V.

In any case, thank you for taking the time to run the test!

I did not realize the tests I promised because I had to solve another issue for a different project. However, preliminary tests (without Flash operations but with millis(), serial, ADC, PWM operations) showed very good results of the processor up to 1.75V, below this, the serial communication degraded and I stopped the tests.

I intend to realize a full and intensive 24h-test, including Flash operations, next week.

Thanks.