The default brown-out detection level for the ATmega32u4 is 2.6V (typical) in the range of 2.4V to 2.8V. The table of possible values:

2.6V default

Unfortunately there is a large gap between 2.6V and 3.4V. Another possibility is "brown-out detection disabled" which is not in my table but it certainly exists.

My application uses an Adafruit board at 3.3V and 8MHz. The application is non-life threatening but accuracy is always of interest so I ought to benefit from brown-out detection, if feasible. This board aside, 3.3V seems to be a popular voltage for a microcontroller Vcc level so the default 2.6V brown-out level seems to be a good choice except for the fact that the datasheet also has this graph.

Safe Operating Area graph for the ATmega32u4

One interpretation is that at 2.65V (which is above the default brown-out level) a frequency of 8MHz is in some way unsafe and the safe frequency is somewhat lower by extrapolation. I don't want to run slower than 8MHz. Another interpretation is that the graph gives you information about the maximum frequency between 2.7V and 5.5V and no other conclusions should be drawn. There should be no extrapolation.

My question is: What were the design considerations that caused there to be a large gap between 2.6V and 3.4V on the brown-out level table? It seems wasteful to have to choose a 3.4V brown-out level in a battery powered application.


You need to look at the tolerance of the brownout voltage threshold as well as the nominal value.

enter image description here

The 2.6V setting (and really, any of the settings) is useless for a 3.3V nominal supply at any clock frequency. It might work, but is that good enough for you? It isn't for me.

If you need a reliable BOD reset you'll have to supply it externally or use different chip.

Perhaps they committed to the settings before they characterized the chip and figured out that it will not operate reliably at (say) 1.8V.


Common logic voltage levels are 3.3 V and 5 V, and many batteries have 4.2 V or 4.1 V. So the brown-out levels are obviously designed to be 0.7 V below these supply voltages.

In general, power supplies are assumed to have tolerances of ± 10 % (this is why the datasheet often says "4.5 V – 5.5 V"). And when your power supply outputs 4.5 V, you want to have some additional safety factor so that your microcontroller does not reset at the slightest dip, but only when the voltage is so low that the power supply is (apparently) completely toast. (The decoupling capacitors buffer the voltage, so a dip of 0.7 V indicates that the actual power supply is already lower, and that the decoupling capacitors are already partially discharged.)

In other words: 2.6 V is the correct brown-out level to use for a nominal 3.3 V supply.


Actually when you use battery, your voltage drops gradually. and you dont want your system to stop working while voltage drops just a little bit. and as you can see in the diagram if your clock is 8mhz you can work with supply voltage as low as 2.7 and lower than that is unsafe or unstable. so you'd want brown out detection to detect when your supply voltage is low enough to make the system unstable or unsafe. 2.6v is a good value when your using 8Mhz clock. if you decide to use a higher clock rate then obviously it's good practice to make brown out threshold higher. you can also make the threshold lower if you'd use lower frequencies or want to extend battery life and you'd risk performance in non critical applications.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.