搜索
bottom↓
回复: 116

不要忘记使用AVR的BOD功能!

[复制链接]

出0入0汤圆

发表于 2007-6-12 22:15:31 | 显示全部楼层 |阅读模式
作为一个正式的系统或产品,当系统基本功能调试完成后,一旦进行现场测试阶段,请注意马上改写熔丝位的配置,启用AVR的电源检测(BOD)功能。



对于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自己本身就有该功能,一定要使用。



这些教课书上是没有的。

阿莫论坛20周年了!感谢大家的支持与爱护!!

如果天空是黑暗的,那就摸黑生存;
如果发出声音是危险的,那就保持沉默;
如果自觉无力发光,那就蜷伏于牆角。
但是,不要习惯了黑暗就为黑暗辩护;
也不要为自己的苟且而得意;
不要嘲讽那些比自己更勇敢的人。
我们可以卑微如尘土,但不可扭曲如蛆虫。

出0入0汤圆

发表于 2007-6-14 13:34:57 | 显示全部楼层
好啊,我回去试下

出0入0汤圆

发表于 2007-6-15 17:15:45 | 显示全部楼层
很重要的一项,好多人都不知道用的。

出0入0汤圆

发表于 2007-7-6 16:30:05 | 显示全部楼层
哇,这么重要,一定要使用!

出0入0汤圆

发表于 2007-7-6 22:20:16 | 显示全部楼层
有道理,是宝贵的经验

出0入0汤圆

发表于 2007-7-10 14:55:33 | 显示全部楼层
谢谢马老师!

出0入0汤圆

发表于 2007-9-14 16:50:33 | 显示全部楼层
谢谢提醒,   

  想知道怎么用  BOD   需要搭建什么样的外围电路,这样写设置程序,

   能不能给一个应用bod的示例,

   新手, 问题多多, 谢谢马老师…………

出0入0汤圆

发表于 2007-9-14 16:57:16 | 显示全部楼层
楼上,BOD  不需要设置程序的,也不要额外的外围电路。

只需要把熔丝位的这个功能开启就可以了。

用过AVR的人都知道  - --  广告嫌疑`~~ 罪过 ~ 罪过~~

出0入0汤圆

发表于 2007-9-18 15:38:03 | 显示全部楼层
good ~~~~~~~~

出0入0汤圆

发表于 2007-10-9 19:49:48 | 显示全部楼层
这贴,看的都说好

出0入0汤圆

发表于 2007-10-10 10:55:35 | 显示全部楼层
泼冷水了,说得不全面,BOD的设置适合对功耗要求较低的场合,对供电要求严格的电池供电系统,最好不要随便打开BOD,因为打开BOD功耗会大很多,datasheet上有详细说明

出0入0汤圆

发表于 2007-10-14 17:11:44 | 显示全部楼层
先前搞FPGA的,太辛苦了,该行做单片机,怕学不好,见到有这么好的论坛,就直接买了马老师的板子,我信心又增加了,希望兄弟们以后多多关照啊

出0入0汤圆

发表于 2007-10-14 17:50:22 | 显示全部楼层
我遇到一个用AVR好几年的老师,他曾经跟我谈到AVR内部电源监控的问题好象是AVR早期产品的电源监控不好,我现在是用MAX809,所以没有用他内部的电源监控.

出0入0汤圆

发表于 2007-10-14 18:17:22 | 显示全部楼层
同意【10楼】

出0入0汤圆

发表于 2007-10-14 19:56:35 | 显示全部楼层
顶一下

出0入0汤圆

发表于 2007-11-12 18:45:44 | 显示全部楼层
新手一般都 不敢到搞熔丝位,老是认为默认就是最好的。却老是因此而吃大亏啊。

出0入0汤圆

发表于 2007-11-13 18:57:49 | 显示全部楼层
学习了,虽然我一直是喜欢这个选项,但不知道好处与坏处,只知道电压低的话,外面的芯片不正常,并且 AVR 本身也容易出错,我实际测试过,不但是低,就是高了也一样,如果 3.3V 的系统,电压上 5V,虽然 AVR 能工作,但出错的机率大增

出0入0汤圆

 楼主| 发表于 2007-11-13 19:00:48 | 显示全部楼层
后面一句不太理解,3.3v系统的话,5v从那里来?

出0入12汤圆

发表于 2007-11-13 20:24:08 | 显示全部楼层
遇到过马老师说的情况。频繁开关电源,eeprom修改了。尤其是使用了大电容,断电时电压降到2v,不会马上将下来。

出0入0汤圆

发表于 2007-11-14 08:52:15 | 显示全部楼层
呵呵,马老师,我的意思是工作电压是 3.3V,但外部电压上的是 5V,不过细想一下,之所以有错,可能还是因为外围芯片的原因,AVR 本身在 5V 下没问题,检讨一下,昨天没有深入

出0入0汤圆

发表于 2007-11-14 09:30:05 | 显示全部楼层
BOD好用但对于低功耗应用则需要考虑。

BOD的基准电源是需要消耗电流的!!!!

出0入0汤圆

发表于 2007-12-16 22:44:21 | 显示全部楼层
呵呵,果然是书上学不到的,以前不觉得BOD怎么样,听马老师这么一说,倒觉得重要了.

出0入0汤圆

发表于 2007-12-16 23:07:28 | 显示全部楼层
正准备去掉51的看门狗电路,改用AVR可以放心用拉!!

出0入0汤圆

发表于 2007-12-19 19:32:23 | 显示全部楼层
学习AVR有3,4年了,这次又受到马老师的教育了.XIEXIE

出0入0汤圆

发表于 2007-12-20 08:39:07 | 显示全部楼层
受教了,谢谢马老师!

出0入0汤圆

发表于 2007-12-21 09:21:56 | 显示全部楼层
谢谢

出0入0汤圆

发表于 2007-12-21 21:26:17 | 显示全部楼层
受教了

出0入0汤圆

发表于 2007-12-22 09:24:12 | 显示全部楼层
谢谢马老师

出0入0汤圆

发表于 2008-1-3 17:17:10 | 显示全部楼层
虽然现在才到,但学到了,谢谢

出0入0汤圆

发表于 2008-1-7 23:43:25 | 显示全部楼层
请教马老师。
我做的一个电路,作么一开BOD功能后就导致EEPROM无法保存的情况?

出0入0汤圆

发表于 2008-2-27 23:01:02 | 显示全部楼层
谢谢马老师!

出0入0汤圆

发表于 2008-2-27 23:13:19 | 显示全部楼层
再次感谢马老师,下面谈下我的亲身经历:

我描述事件的时候比较罗嗦,为的也是以后有人碰到类似问题的时候可以参考,所以,您就慢慢看咯^_^

正在做的一个控制系统,现场环境提供给我的电源是DC 24V,我的系统需要两个电压,一个是DC 12V 3A,一个是DC 5V 200mA。12V稳压选用了1501A12开关稳压IC(此芯片最大电流可以承受5A,如果要达到这么大的电流,配套的电感很重要,必须使用蓝绿磁环,0.85mm的漆包线绕制,22uH的电感量)。5V的电源用7805对12V电源进行稳压。单片机用的是ATMEGA48,使用洞洞板焊接做实验,芯片的熔丝只修改了下振荡源为外部晶体振荡和关闭8分频功能,未开启BOD。

因为12V的电压系统要带动一个直流电机,由12V的继电器进行带动控制,因为电机工作时带动的负载有可能会被外力阻挡而造成电机停转过载,这个时候电机的堵转电流可能达到3A左右,所以在硬件上我做了保护,采用AVR的ADC检测电机的工作电流,如果发生过载,则马上停止电机工作。

这个手工焊接的控制板测试时工作正常,包括电机过载测试,都未发生什么故障。

都测试通过后,制板回来,烧写程序的时候顺便打开AVR的BOD,设置为4.3V。然后开始着手做一些过载测试,发现一过载MCU就马上复位~~~超级郁闷啊~~~以为自己又改了什么程序导致不稳定,或者是启动电机工作后的延时时间不够(大家都知道:在驱动大功率负载的时候,在接通继电器的时候,MCU的指令控制一定要再延时几十个毫秒~几百个毫秒左右,否则会出现继电器吸合后马上断开的问题。详细原因不在本文讨论范围之内就不多说了,书本上都有详细说明这些用法),真的很打击人~ 想想AVR也没这么脆弱~~或者是我布板设计不合理???没这个理由的,以前的板子可是用洞洞板焊接的,以前不管怎么测试都不会复位。试着增加了输出控制的延时时间,还是一样的结果,一过载就复位。

软件改了~不行~~~写入以前的软件~也不行
换回以前的洞洞板测试,OK,没问题。不会吧~~~

静下心来仔细想想,两个板的差异,硬件一样,软件一样,芯片一样。等等…好象…对了!新做的板子都开启了BOD使能。马上先把BOD关了,果然,系统没有再发生过一次复位的情况。问题是解决了,但总得给个理由吧,总不能就放着BOD不用~~~再用眼睛仔细观察电机过载时电路板的一些状态,发现12V的LED电源指示灯会在电机过载的瞬间暗了一下,哇靠~!火眼金睛啊~!多带了个眼镜果然不一样!^_^哈哈,知道哪里的问题了。应该是电机过载时,12V的电压有所跌落,然后导致经过7805稳压后的5V电压也有所跌落,虽然这个电压的跌落只是瞬间,可能有跌到 4.3V以下,但这个瞬间马上被BOD检测到了,BOD强制MCU复位。这个瞬间的跌落用万用表是检测不出的,特别是用数字表更看不出了,有示波器的话就可以看下这个的跌落波形了。我手上只有两个数字表,所以没法把这个瞬间的波形捕捉出来给大家看了。(有些时候数字表还不如指针表,指针表可能还会更直观的显示出一些瞬态变化,如果有指针表应该也可以看出一些细微的电压波动)

解决方法:BOD的作用上面马老师已经说了,所以还是不能关掉了事,设置为2.7V即可,我这样做有没有道理大家自己想咯^_^

把自己使用BOD的过程分享出来是想告诉大家:使用BOD的时候不是随手开下就了事的,要注意实际工作的一些异常状况的发生,设置好适合系统的BOD电压才能保证你的系统工作的更可靠。

AVR,我看行!   ^_^ 嘿嘿,ATMEL可是没给我广告费哦~

出0入0汤圆

 楼主| 发表于 2008-2-28 13:35:00 | 显示全部楼层
31楼给出一个非常好的实际例子.

如果31楼的系统使用了EEPROM,如果不使用BOD的话,EEPROM中的数据被破坏的可能性非常大.

但时BOD的功能并不能解决电源本身的缺陷.

如果使用AVR片内的EEPROM,BOD电压设置为2.7V是可以的.但你的系统是5V的系统,如果外围的芯片都是5V工作的芯片,那么当电压跌到3V时,AVR还是能正常工作,但外围芯片能正常工作么,如果AVR此时操作外围芯片能正常吗?如果外围芯片不能正常工作,系统还稳定吗?

因此,一个可靠的系统,不能仅依赖AVR,整个系统电路的设计,参数的选择,电源系统,布板的好坏等都时非常重要的.

出0入0汤圆

发表于 2008-2-29 08:51:54 | 显示全部楼层
我正在解决这个问题.但很奇怪,我先前的板子采用直插元件(控制芯片采用了ATMEGA128L,但采用的是本站的TQFP32-64通用转换板),没有设置BOD,控制没有问题,负载带有压缩机,四通阀,风扇,接触器等既有感性的,也有纯电阻的;后来我把其它芯片都改成贴片重新设计了板子,用户在现场打电话给我,设置的参数(在128L内带EEPROM里)容易改变,基本上上电控制每次都这样,控制不能正常进行,我让他在开关电源的前端接了一个滤波器,这下运行6,7个小时没有问题,但早上上班发现设置的参数又发生了变化,目前产品还没有回来,等回来之后肯定要设置一下BOD,电压设置为2.7V.但我觉得奇怪,之前直插的板子怎么没有问题?唯一有变化的,连接ATMEGA128L的管脚线后来改成了10mil,以前应该是15到20mil,这会影响ATMEGA128L的工作电压吗?感谢马老师.

出0入0汤圆

发表于 2008-2-29 09:05:23 | 显示全部楼层
另外请教大家一个问题:我要把单片机的5V地拉到150米外,通过一个开关再拉回来,用单片机的I/O检测这个高低电平,从而检测开关的断开与接通,不知道这个远距离线是否影响单片机的正常运行,大家是否有这样的经验?控制的负载既有感性的,也有纯电阻的.干扰让人头痛的.谢谢大家!

出0入0汤圆

发表于 2008-2-29 11:39:16 | 显示全部楼层
谢谢【32楼】 machao 老师的指点。

我现在的电源方案是 DC24V --> AP1501-12稳压到12V  --> 7805稳压到5V给AVR , 这样出现的问题是7805的输入端的12V电压会因为12V的负载而降低,导致7805的输出不稳定导致AVR工作异常。


解决方案:DC24V --> AP1501-12稳压到12V给12V的负载

          DC24V --> LM317 稳压到5V给AVR (因为24V的功率很大,不会受12V的负载而下跌,所以把24V直接稳压到5V,
          可得到稳定的5V,虽然从24V直接降到5V压降很大,但5V的负载电流很小,所以基本上不会有太大的发热问题)

出0入0汤圆

发表于 2008-3-2 21:18:26 | 显示全部楼层
谢谢,早看到就好了

出0入0汤圆

发表于 2008-3-13 18:10:56 | 显示全部楼层
讨论很实际,工控现场电源瞬间过压和跌落是经常发生,不可预测的.

出0入0汤圆

发表于 2008-3-19 12:38:37 | 显示全部楼层
学习了。

出0入0汤圆

发表于 2008-3-19 14:54:23 | 显示全部楼层
Mark

出0入0汤圆

发表于 2008-3-28 15:47:45 | 显示全部楼层
学习~~~~

出0入0汤圆

发表于 2008-4-10 13:54:54 | 显示全部楼层
很好

出0入0汤圆

发表于 2008-4-11 13:45:12 | 显示全部楼层
大家都知道:在驱动大功率负载的时候,在接通继电器的时候,MCU的指令控制一定要再延时几十个毫秒~几百个毫秒左右,否则会出现继电器吸合后马上断开的问题。详细原因能说一下吗?我没找到相应的资料。一般MCU控制继电器不是都是输出一个高电平信号或低电平信号通过三极管进行控制的吗?为什么要再延时几十个毫秒~几百个毫秒左右?

出0入0汤圆

发表于 2008-4-28 08:51:23 | 显示全部楼层
顶一下.

出0入0汤圆

发表于 2008-6-23 11:14:12 | 显示全部楼层
受教了!

出0入0汤圆

发表于 2008-7-24 13:10:40 | 显示全部楼层
ddddddddddddddddd

出0入0汤圆

发表于 2008-7-24 13:44:19 | 显示全部楼层
学习了

出0入0汤圆

发表于 2008-10-23 12:03:28 | 显示全部楼层
谢谢马老师!



很奇怪为什么M88的BOD设置默认是不允许的呢?是为了调试方便吗?

对于我这种新手来说,能不动熔丝位就不动,使用默认,没用BOD吃亏了哟!

出0入0汤圆

 楼主| 发表于 2008-10-23 12:20:50 | 显示全部楼层
与BOD配合的是门限电压的选择和溶丝配置。



拿M16将:5V系统应该使用4v,3V系统是2.7v



AVR又不知道你使用几V的系统,那么就不能确定门限电压,也就不能开启BOD。



如果缺省设置门限为4v,BOD开启(适合5V系统),可用户的系统为3V,AVR根本不工作,不仅对于新手,就是对于许多老手也头大了。



如果缺省设置门限为2.7v,BOD开启(适合3V系统),可用户的系统为5V,这个BOD相当不起作用了。



你明白BOD设置默认是不允许的原因了吧。

出0入0汤圆

发表于 2008-10-23 14:37:01 | 显示全部楼层
噢!明白了

谢谢马老师!

出0入0汤圆

发表于 2008-10-28 14:48:18 | 显示全部楼层
多谢马老师提醒.这下受益匪浅呀!

出0入0汤圆

发表于 2008-11-1 10:39:32 | 显示全部楼层
宝贵的经验 

出0入0汤圆

发表于 2008-11-1 11:17:45 | 显示全部楼层
M48的中断入口:BOD,复位,上电,还有看门狗,好像都是同一个中断地址,在中断程序种如何区别这几种状态即如何区别中断源?

终于读到要找的这部分内容了:

来自马老师的了一篇关于avr应用经验的帖子:http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=151222&bbs_page_no=1&bbs_id=1003

  .利用内部的EEProm和寄存器MCUCSR判断复位标志,进行不同的处理

本贴被 zswlb 编辑过,最后修改时间:2008-11-01,16:48:15.

出0入0汤圆

发表于 2009-3-10 16:08:18 | 显示全部楼层
加上后,系统稳定了很多

出0入0汤圆

发表于 2009-3-16 17:08:07 | 显示全部楼层
很感谢马老师。。。

出0入0汤圆

发表于 2009-4-11 15:46:38 | 显示全部楼层
做个标记,回去看看

出0入0汤圆

发表于 2009-4-14 09:03:57 | 显示全部楼层
谢谢楼主。好东西,教科书上没有的正式我们需要的!

出0入0汤圆

发表于 2009-4-15 13:51:27 | 显示全部楼层
我也是刚开始用AVR的,这个很好

出0入0汤圆

发表于 2009-5-6 12:32:02 | 显示全部楼层
受教了

出0入0汤圆

发表于 2009-5-15 16:06:19 | 显示全部楼层
我的板子是在断电重启的过程中,Flash去的程序都损坏了,当时没有打开BOD功能,估计是在掉电的瞬间单片机的误操作,打开BOD功能就没有再出现过了

出0入0汤圆

发表于 2009-5-24 09:07:45 | 显示全部楼层
受教了,谢谢马老师!

出0入166汤圆

发表于 2009-5-24 10:24:05 | 显示全部楼层
31楼·的做法和不采用bod没啥区别

5v系统采用2.7vbod,呵呵自己骗自己????


还是查查布线问题吧

出0入0汤圆

发表于 2009-5-25 19:18:37 | 显示全部楼层
我要调试时一般也选上4V的BOD.

出0入0汤圆

发表于 2009-5-25 19:33:44 | 显示全部楼层
马老师,我是AVR初学者。请问您两个问题:1.M16的头文件“M16def.inc”中没有R0-R31的定义,为何在AVR studio中却不会出现错误??不是要先定义后使用的吗?
                                       2.下面为您书上的一个程序,摘取部分如下:
.include "m16def.inc"                       
.def temp1=r20                                       
.org $0000                                               
rjmp reset                                               
                                                               
.org $002A                                               
reset:        ldi r16,high(RAMEND)       
        。。。。。               
loop:   。。。。。                       
        rjmp loop                               
;----------------------------------------
我将.def temp1=r20 改成r10,却出现编译错误。都是通用寄存器,为何什么不行呢?我再试了一下,R0-R15都不行,R16-R31就可以。为什么呀?
网上也搜不到答案,很郁闷啊。请马老师赐指点一二。

出0入0汤圆

发表于 2009-6-3 16:37:39 | 显示全部楼层
我是新丁。拜讀馬潮老師及樓上各位的解說,獲益良多。謝謝。
在學AVR編程時,也遇到過63樓所說的ro-r15編譯錯誤的情況,經仔細研究之後,發現AVR的指令因為要用16 bit表示,寄存器一般使用5 bit表示,所以可以表示32個寄存器r0-r31。但其中有些指令由於位數所限,只能用4個bit表示,4個bit只可以表示16個寄存器,為此Atmel要做一個取捨,結果只能用r16-r31這16個寄存器。不能用ro-r15的指令主要是和直接數有關的指令,例如ldi,cpi, sbci, subi, andi, ori等。如果我們看它們的二進制表示時,便可以更清楚了。

CPI   0011 KKKK dddd KKKK
SBCI  0100 KKKK dddd KKKK
SUBI  0101 KKKK dddd KKKK
ORI   0110 KKKK dddd KKKK
ANDI  0111 KKKK dddd KKKK
LDI   1110 KKKK dddd KKKK
SBR   0110 KKKK dddd KKKK
CBR   0111 KKKK dddd KKKK
SER   1110 1111 dddd 1111

其中前面4個位是用來表示指令;中間及後面的KKKK KKKK是用來表示直接數,從0到255;dddd是r16-r31中的一個寄存器的地址,例如0001是r16,1111是r31。SER是LDI $FF的特別例子,KKKK KKKK都變成1111 1111。

這些資料在我看過的很多的書本上都沒有提及,一般都是說AVR有32個寄存器,但對這些限制都沒有說明。我在胡漢才的『高檔AVR單片機原理及應用』的附錄II 「ATmega 8 單片機指令表」中推敲出來,野人獻曝一番,献羞了。

出0入0汤圆

发表于 2009-6-6 09:32:55 | 显示全部楼层
呵呵 首先谢谢马老师  看完了帖子 收益很多~~~  明白了BOD 真正的用途 同时看了31楼的贴 也明白了 产品 电源方案合理的重要性
如果工作场合电源 很不稳定的情况下 还是要注重于工作电源的处理 BOD 只是防止万一  另外在控制精度要求很高的场合 BOD的复位 会不会给现场带来麻烦呢?

出0入0汤圆

发表于 2009-6-24 09:00:28 | 显示全部楼层
看了一下,发现BOD上面有两个,不知道怎么选择,BODLEVEL、BODEN,请马老师赐教!

出0入0汤圆

发表于 2009-6-27 21:22:36 | 显示全部楼层
支持马朝老师

出0入0汤圆

发表于 2009-11-4 22:28:36 | 显示全部楼层
BOD不需要设置程序的,也不要额外的外围电路,只需要把熔丝位的这个功能开启就可以了。
但是开启BOD功能后,系统的耗电量也会增加,对于低功耗(电池供电的)要权衡一下了。

出0入0汤圆

发表于 2009-11-4 23:09:04 | 显示全部楼层
学习

出0入0汤圆

发表于 2009-11-29 10:10:21 | 显示全部楼层
不错的经验!!!!!!!!

出0入0汤圆

发表于 2009-12-13 17:29:31 | 显示全部楼层
学习中。。。。

出0入0汤圆

发表于 2009-12-24 00:46:47 | 显示全部楼层
谢谢马老师,受教了…

出0入0汤圆

发表于 2009-12-24 09:04:22 | 显示全部楼层
昨天试下果然出现问题

出0入0汤圆

发表于 2010-2-20 19:04:16 | 显示全部楼层
做个记号

出0入4汤圆

发表于 2010-2-21 11:09:11 | 显示全部楼层
需要注意的是:BOD开启会增加功耗,对于低功耗产品要权衡选择!

出0入0汤圆

发表于 2010-3-3 17:26:00 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-7 18:58:33 | 显示全部楼层
MARK

出0入0汤圆

发表于 2010-3-7 21:34:30 | 显示全部楼层
马克了

出0入0汤圆

发表于 2010-3-7 21:49:57 | 显示全部楼层
以前用51的片子, flash程序莫名其妙丢失。看了59楼,估计也是这原因。

出0入0汤圆

发表于 2010-4-2 10:26:45 | 显示全部楼层
受教奥

出0入0汤圆

发表于 2010-4-7 23:56:34 | 显示全部楼层
31楼的问题可以这样解决的:在12V和7805之间串接二极管,然后在7805的输入端接个电解电容就可以了,这样外部12V下降时,由于二极管的单向导电性,不会让电流倒流回12V电源,所以5V会很稳定。这个问题与BOD无关,是电路设计问题。

BOD在适当的情况下应该考虑使用,但有时候系统不允许随便复位的,或者说复位也是不能接受的,所以最关键的还是要设计可靠的电路才是硬道理。

出0入0汤圆

发表于 2010-4-10 09:59:20 | 显示全部楼层
多谢马老师!

出0入0汤圆

发表于 2010-4-26 22:33:54 | 显示全部楼层
请问那个4V是在哪里设置啊???   麻烦马老师解决一下啊   说详细一点。。。

出0入0汤圆

发表于 2010-4-28 21:00:18 | 显示全部楼层
31楼的问题可以这样解决的:在12V和7805之间串接二极管,然后在7805的输入端接个电解电容就可以了,这样外部12V下降时,由于二极管的单向导电性,不会让电流倒流回12V电源,所以5V会很稳定。




上面这个说法正确嘛????

出0入0汤圆

发表于 2010-5-1 21:50:40 | 显示全部楼层
看了马老师的帖子受教很多啊

出0入0汤圆

发表于 2010-8-18 23:32:29 | 显示全部楼层
我在自己的一个工程中发现一个BOD问题。芯片时mega16L,5V系统,打开BOD(4.0V),外部8M晶振。复位电路为10K上拉到5V,反向并联1N4148,103电容到地。使用电源为明纬开关电源,rise,hold up分别为50ms,20ms。电源进口处470uf日本化工NCC聚合物固态电容,ESR12毫欧。复位延时设置为16KCLK+0ms,这个是手册上使用外部高频石英晶振的推荐设置。一般的上电复位都没有问题,但是如果重复快速的开关电源,则可能会出现死机,这个时候手动短接REST到地可以重新激活芯片,在死机的时候晶振处于正常激活状态。如果设置成16CLK+64ms则没有问题,至少我测试了几百次没有发现死机。因为是工业用途,不敢掉以轻心,还是使用了MAX809。看了芯片手册关于EEPROM的部分,提到可靠性的时候,也说可加外部复位监控芯片。不知道是不是MEGA16的BOD在这类特殊情况下会失效。本人第一次使用AVR,望各位大侠多多赐教。

出0入0汤圆

发表于 2010-9-17 23:35:25 | 显示全部楼层
回复【84楼】mutou09  
31楼的问题可以这样解决的:在12v和7805之间串接二极管,然后在7805的输入端接个电解电容就可以了,这样外部12v下降时,由于二极管的单向导电性,不会让电流倒流回12v电源,所以5v会很稳定。

上面这个说法正确嘛????
-----------------------------------------------------------------------

应该可行,一般二极管不行的话,可以考虑使用快恢复的。
31楼的解决方法更好,不用增加零件,7805发热略大点,电流小是可以接受的。
遇到过类似情况,没有影响到单片机复位,但是同时供电点的LED明显闪烁了。
可以考虑使用mos代替继电器来驱动直流电机,可以调速,能够做软启动,体积也小很多吧,不过也得考虑成本,散热,稳定性要求等。

出0入0汤圆

发表于 2010-10-9 13:21:09 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-10-24 23:03:22 | 显示全部楼层
前段给mega128配置了外围看门狗有低电压检测功能。频繁的给单片机通断电,单片机程序好像飞了但是外部看门狗芯片没对m128复位,使能他的bod好像也没作用,程序飞掉了,没有复位。

出0入0汤圆

发表于 2010-11-1 21:14:51 | 显示全部楼层
mark,谢谢马老师

出0入0汤圆

发表于 2010-11-10 17:28:51 | 显示全部楼层
受益匪浅

出0入24汤圆

发表于 2010-12-17 09:11:23 | 显示全部楼层
感谢马潮老师
之前一直没用过。。。

出0入4汤圆

发表于 2010-12-18 23:00:59 | 显示全部楼层
感谢马老师提醒!

出0入0汤圆

发表于 2010-12-19 18:46:32 | 显示全部楼层
受教了!

出0入0汤圆

发表于 2011-2-2 23:13:10 | 显示全部楼层
宝贵的经验!!!

出0入0汤圆

发表于 2011-7-28 12:09:42 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-8-26 00:00:10 | 显示全部楼层
在马老师的书上找到了这一章节

出0入0汤圆

发表于 2011-10-22 23:21:16 | 显示全部楼层
"知道哪里的问题了"

your power supply.

出0入0汤圆

发表于 2011-11-8 12:19:04 | 显示全部楼层
受教了,分析的很精辟,我认为。我认为一个好的程序不仅仅是实现基本功能,还要充分考虑到误操作、硬件的非正常工作等等意外情况,这也是好多国产山寨设备所不具备的。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-9-27 06:22

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表