AVR® Device Brown-out Detection (BOD)

Last modified by Microchip on 2023/11/09 09:02

Many AVR® devices have an on-chip Brown-out Detection (BOD) circuit for monitoring the Operating Voltage (VCC) level during operation. By comparing the VCC to a fixed trigger level it can determine if the device needs to be put into reset mode to prevent erratic operation.

BOD Operation

BOD Operation

The trigger level has a hysteresis to ensure spike-free BOD. When the BOD is enabled, and VCC decreases to a value below the trigger level (VBOT-), the Brown-out Reset is immediately activated. When VCC increases above the trigger level (VBOT+), the delay counter starts the MCU after the Time-out period tTOUT has expired. The BOD circuit will only detect a drop in VCC if the voltage stays below the trigger level for longer than the minimum pulse width Brown-out Detection (tBOD) value specified in the device's data sheet.

BOD Fuse Settings

The trigger level for the BOD can be selected by the BODLEVEL Fuses when the device is programmed. This setting cannot be changed while running the application software.

BOD Fuse Settings

BOD Disable

When the Brown-out Detector (BOD) is enabled by BODLEVEL fuses, the BOD actively monitors the power supply voltage even during a sleep period. To save power, it is possible to disable the BOD by software for some of the sleep modes. The sleep mode power consumption will then be at the same level as when BOD is globally disabled by fuses.

If BOD is disabled in the software, the BOD function is turned off immediately after entering the sleep mode. Upon wake-up from sleep, BOD is automatically enabled again. This ensures safe operation in case the VCC level has dropped during the sleep period.

When the BOD has been disabled, the wake-up time from sleep mode will be approximately 60 μs to ensure that the BOD is working correctly before the MCU continues executing code.

BOD disable is controlled by the BOD Sleep bit in the MCU Control Register MCUCR.BODS. Setting this bit to '1' turns off the BOD in relevant sleep modes, while a '0' in this bit keeps BOD active. The default setting, MCUCR.BODS = 0, keeps BOD active.

Additional Information

AN1051 - AVR180: External Brown-Out Protection (Application Note)