Microcontroller Brown-out detection

Mostly all microcontrollers have built in Brown-out detection (BOD) circuit, which monitors supply voltage level during operation. BOD circuit is nothing more than comparator, which compares supply voltage to a fixed trigger level.

If microcontroller doesn’t have On-Chip Brown-Out detector, then there can be external circuit used :

external brown out circuit

The circuit above illustrates the brown out detectors circuit. In real word there are special IC where additional delay circuitry and hysteresis used because normalizing of supply voltage may take some time. Such IC’s are more cheap than one built from discrete components.

As an example lets take Atmega128 microcontroller which have On-chip Brown-Out detector. Trigger level can be 2,7V or 4,0V (selected by programming Fuse bits). Trigger level also has a hysteresis to avoid spikes. The hysteresis can be interpreted as VBOT+=VBOT+VHYST/2 and VBOT-=VBOT-VHYST/2.

ATmega 128 BOD

So if Brown-Out circuit is enabled by the Fuse bit and Vcc voltage decreases to a value bellow trigger value (VBOT-), Then Brown-Out reset is activated and after supply voltage increases above triggered level (VBOT+) then delay timer starts counting for keeping MCU on reset for some time. After timer counts up, then internal reset signal finishes.


  1. Thank you for brown out detector explanation.
    please provide an example sample project showing how to use on-chip brown out detector of AVR microcontrollers

  2. Hello,
    Thank you for brown out detector explanation. Its is very helpful.
    Please provide an example sample code showing how to use built in Brown-out detection (BOD) circuit of AVR Atmega128 microcontroller.
    Amol G

  3. hello,
    can somebody please explain in simple language, what is burnout?

  4. Hi,

    Thanks for the explanation of the brown-out, but would it be better to go with an external brown-out or an internal programmed brown-out? And could a programmed brown-out be corrupted if there are power problems?

    Thank You

  5. The internal brownout detector is hardware, not software.

  6. You can either use a Voltage Detector, on a simple TO-92 package can help you reset your microcontroller when voltage goes lower than 4.5V


  7. “Trigger level also has a hysteresis to avoid spikes. The hysteresis can be interpreted as VBOT+=VBOT+VHYST/2 and VBOT-=VBOT-VHYST/2.”
    Well, that’s not entirely correct.
    Hysteresis is there to avoid constantly triggering and releasing the brownout reset if the voltage is exactly at the threshold level.
    Hysteresis means that the high-going threshold (that releases the BOR) is significantly above the low-going threshold (that triggers the BOR), so after a BOR, the voltage has to raise significantly (by the size of the hysteresis) before the brownout condition is considered to be over.
    Since VBOT is the trigger level, (VBOT-) == (VBOT) and (VBOT+) == (VBOT)+(VHYST)

Leave a Reply to Matthew Cancel reply