Brown-Out Reset -

Brown-Out Reset

Over the last four columns I’ve been exploring ultra-low power systems that have to run for years on a single coin cell. My focus has been on the CR2032, a 220 mAh battery, but the analysis applies to any circuit using cells based on the same LiMnO2 chemistry.

A few readers have written about how they defend against a dying battery using a brown-out reset (BOR) circuit, a feature pretty much every low-power microcontroller has. Unfortunately, most are poorly designed and/or lightly documented and should not be used.

One popular ultra-low power MCU, from a vendor who noisily advertises two to three decades of coin cell operation, has a BOR which is off by default. On, it requires somewhere between 8 (typical) and 16 uA (worst case). Remember that, for a decade of life from a CR2032, the system’s average power draw cannot exceed 2.5 uA. Even if one were to foolishly use the typical number, the BOR by itself will deplete the battery in just a couple of years.

Another vendor, pushing extremely-low power ARM parts, rates the BOR at 0.49 to 1.26 uA – typical. There’s no max listed; there’s not the slightest guidance of what statistical distribution one can expect when making thousands of systems. 1,26 uA eats half the 2.5 uA budget.
In another case the datasheet reads about the BOR: “In the deeper sleep modes, this will contribute significantly to the total current consumption.”

As Deming said: “In God we trust, all others bring data.” They didn’t, and it strikes me as risky to expect divine intervention instead of doing careful analysis. I’d be wary of using these uncharacterized parts in long-lived applications. As always, read the datasheets pessimistically and carefully.

When does the BOR interrupt occur? In some cases the voltage range is very wide; an example is an MCU where it is listed as 2.05 (min), 2.2 (typ), and 2.35 volts (max). Doing worst-case design you’d have to assume that the BOR may occur at 2.35 volts.

The following graph is one I have used before; it shows the voltage a CR2032 can deliver as it discharges as a function of load. The 10 mA load line is pretty common for an awake MCU with enabled peripherals; 30 mA is not unexpected if there’s any sort of wireless comm going on. The heavy red line is at 2.35 volts, the max value where we may see a BOR interrupt. Note that in this case the BOR circuit will signal a dead battery, if there’s a 30 mA load, shortly after you ship the product. With a 10 mA load the battery-dead indication happens when there’s still 31% capacity left.

In other words, the BOR circuit is useless.

A much better alternative is to leave the BOR off and use the A/D. Wake up from time to time, apply a load similar to what the system normally needs when awake, and read Vcc. If it’s near 2.0, then signal a battery failure (or take whatever action your system needs in this situation).

If such a reading is taken once every ten hours (surely, more often than needed), and 10 mA were pulled for 1 ms, over a decade this eats only 0.03 mAh, or 0.01% of a CR2032’s capacity. And, by manually reading the A/D a more nuanced approach to battery management is possible than by relying on a single, poorly-controlled, BOR voltage.

Jack G. Ganssle is a lecturer and consultant on embedded developmentissues. He conducts seminars on embedded systems and helps companieswith their embedded challenges, and works as an expert witness onembedded issues. Contact him at . His website is.

6 thoughts on “Brown-Out Reset

  1. “Great analysis Jack. Hope it's appreciated by those that have to design this stuff. I'm curious, have you opened any dialog with the manufacturers of low power MCU's to discuss any of this?nBest always,nSteve C.”

    Log in to Reply
  2. “If the MCU is powered by the coin cell at the time the ADC is sensing the cell's voltage, it might be necessary to scale the measured voltage using a voltage divider so that it's in the range the ADC can read. The voltage divider can also serve as the tem

    Log in to Reply
  3. “I don't think I've ever used a BOR, but then I seldom do anything with low-end power devices.nnI wonder whether it would be worth having the BOR deactivated during sleep and only enabling it in run mode. Cell voltage tends to creep up during sleep – eno

    Log in to Reply
  4. “a very good insight jack…nI am fresh out of college, and in contrast to my expectations, Software development for embedded devices is one crazy place.nThings like these contribute to the chaos.nI can totally relate to your wordsn” read the datashee

    Log in to Reply
  5. “The BOR functionality for most of not all MCU's is so bad (in terms of current consumption) that for low power design the ADC or external tripping circuits would be the better solution. IMHO the purpose of brown out detection is to see a glitch on the pow

    Log in to Reply

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.