对于5V系统,设置BOD电平为4.0V;对于3V系统,设置BOD电平为2.7V。然后允许BOD检测。这样,一旦AVR的供电电压低于BOD电平,AVR进入RESET(不执行程序了)。而当电源恢复到BOD电平以上,AVR才正式开始从头执行程序。保证了系统的可靠性!
原因分析如下:
AVR是宽电压工作的芯片,当电压跌至2.5V,系统程序还能工作。这是有2个可怕的现象可能出现。
1.外围芯片工作已经混乱,AVR读到的东西不正确,造成程序的执行发生逻辑错误(不是AVR本身的原因)。
2.当电源低到临界点,如2.4V时,并且在此互上互下的,AVR本身的程序执行也不正常,取指令、读数据都可能发生错误,或程序乱飞、不稳定(AVR本身的原因,实际任何的单片机都是这样的),非常容易造成EEPROM、FALSH的破坏。有人问51怎么不会?实际上51也是这样,只是51内部没有直接写EEPROM、FLASH的指令,它的程序乱飞留不下痕迹。还有人有疑问:外挂EEPROM,掉电时怎么不会改写?实际是外挂EEPROM,当电压低于4V(2.7V)时,它已经不工作了,程序去改内容也改不了。而AVR内部的东西在临界电压时都能工作,但非常不稳定。
AVR的BOD功能必须要使用,我早期使用51时,凡是产品外部都要使用电源监测芯片,现在AVR自己本身就有该功能,一定要使用。