C51为什么我的stm32看门狗复位电路只能执行一次复位操作

求大神解答!51单片机有了复位电路为什么还要看门狗复位啊?_百度知道
求大神解答!51单片机有了复位电路为什么还要看门狗复位啊?
如题,最小系统里的复位电路和看门狗复位电路有什么不同吗?
我有更好的答案
其实一般小程序用不着看门狗,是帮你的程序看家,当你的程序有问题时,狗就要帮你复位了,比如10ms,20ms等,称作喂狗。复位电路只是作为外部手动复位的一种方式,那么在程序正常运行时,正常喂狗了,它就会乖乖地,如果程序出问题,就会自动进行复位了,那么程序喂不了狗了。而看门狗定时器的原理是,当你开启它后,它就会定时需要被设定一次,狗就会在定时时间到时认为你程序死了,比如跑飞了,或者取指错误死机了,都是复杂的大程序用看门狗,顾名思义
这么说,看门狗的作用就是实时监测,是一种动态复位咯?那复位电路的作用体现在哪里呢?看门狗不是已经可以实现复位了吗?为什么还要外部的复位电路呢?
看门狗,是在你程序运行时用来监控程序的,是跟程序运行状态挂钩的。但是,你想想,除了这种情况下需要复位,你单片机系统刚通电的时候,需不需要复位,当你在调试的时候,需要让单片机重新运行程序,也需要复位吧?复位电路的输出信号就是RST,单片机一上电,复位电路中的电容开始充电,充电过程中,RST信号是使单片机复位的,充完电,RST就变成了高电平,复位信号取消,这就保证了在单片机一通电后从0000H地址开始运行程序的。有些复位电路里加了按钮,就是想通过按钮来改变RST电平使单片机复位。总之,没有了外部复位电路,你的单片机上电后,都不知道使从哪里在运行程序,所有功能寄存器的值也就不确定,单片机就没法用了。因此复位电路是保证单片机可以运行的必要条件。
听你这么说,我感觉之前确实是对复位理解太狭隘了~~不过我对你说的那些关于RST信号高低什么的复位信号取消不取消什么的不是很理解耶~~不知道你是不是基于下面这个复位电路讲的呢?我用的就是这个复位电路哈~~
那我就给你讲讲这个电路:这个电路有两个功能:上电复位和按键复位。
上电复位:先不看按钮(就当它是开路),在单片机未上电时,VCC和地当然都不存在。现在,单片机上电,VCC有了,地也有了,但是RST瞬时应该是啥电平呢?因为电容两端的电压不能突变,所以RST瞬时值是VCC,也就是高电平,此时单片机进行复位,随着电容充电,慢慢的电势差被拉开了,RST端也逐渐接近地,也就是低电平,就不再起复位作用了。图中的电容、电阻值的选择就是为了让电容充电的时间满足单片机正常复位需要的高电平持续时间。
按键复位:现在,你的单片机程序已经正常运行了,当然由于电容的充电,RST端已经是低电平了,现在你需要复位一下单片机,怎么做?重新给单片机通电就可以,但是这种方法比较麻烦,为了方便,这里就加了一个按钮了。
当你按下按钮,RST端直接被R16电阻拉到高电平,进行复位,当释放按键时,RST又会被地拉回低电平,因此只要你按键时间够长,就产生了一个从高到低的电平变化区间,就复位了。一般复位时间记得好像是200个微秒就够了。
谢谢大神~~现在我已经彻底明白了复位电路的工作原理了~~但我就是不太清楚电容电阻值该怎么选取啊~~假如我的晶振是11.0592MHz,那我该怎么选取电阻值和电容值呢?加入我的晶振是12MHz呢?电容一定要电解电容么?我好像用了非极性电容~~~大神,最后一次追问了,希望能得到你的回答~~
1、2、理论上,晶振越快,你的机器周期就越短,由于单片机复位需要RST上持续两个机器周期的高电平,因此需要的复位时间就越短。那么当晶振是12M时,需要2个微秒的高电平,是11.0592M时,需要2.17个微秒高电平。
复位电路的参数:R16只要能保证它在和R17分压时压降不多于0.5V就行.
R17和C13的组合严格的充放电计算公式比较复杂,但是可以用(3~5)RC来估算,你图中的参数是51复位常用的参数,时间远远超过了2个机器周期。3、电容不一定非要电解电容,只要是能充放电、参数合适的电容都行,但是你用电解电容的话就得注意一定要把极性放对。
采纳率:78%
个当然不一样,复位电路一般是认为操作复位,使单片机从程序的最开始重新运行。而看门狗电路是为了防止无人监管的时候,这样时间长了,会带来很多损失,看门狗电路开启后,如果程序跑飞,极短时间内单片机自动复位,或者单片机运行环境比较差,容易受到干扰或者程序跑飞
额,我就想知道,既然复位电路是人为操作的,显然很麻烦,为什么不用看门狗复位电路代替呢?多省事啊!还要把外部的复位电路列为最小系统的一部分?
不不不,在程序没有跑飞的情况写,看门狗不会使你的单片机复位,有的时候你在调试程序或者很多情况下你都想使单片机从新工作看下效果,所以还是要必须有外部复位引脚的哈
谢谢大神的热心回答啊~~
那就采纳一下喽,我最近要用财富值
为您推荐:
其他类似问题
51单片机的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。当AVR死到连硬件复位都不行时......
当AVR死到连硬件复位都不行时......
除了断电还有其它什么办法没有? 晶体是工作的. 看门狗也死了.....
我想是没有办法了。
如果此时芯片明显发热,就是传说中的可控硅效应了。
应该是没有办法了.
电源电压是否正常呢?!
可能性不大,自己找其它原因。
怎么造成的
看来MCU电源要用可控电源。当WDT复位时,连同电源一齐复位。
我遇到过这个情况,除了重新上电,暂时还没找到解决方法
所以有点怀疑AVR的狗不是硬狗
在熔丝wdton不选中时,不是硬狗,
失效的可能性很大.
最早发现是从IO口混入约2V左右的电压,&&或电源超缓慢上升.
然后把电源加至5V, 就死了, 慨率&10%.
硬件复位都没用, IC并不发热, 重新上电OK. 硬件狗没用.
我个人觉得100%是芯片缺限.
就同前两年的philips的LPC21xx的ARM一样, 死锁了.
是不是 【1楼】 lijun2005&&所说的可控硅效应, 就不知了.
可能同编译器相关,硬复位时被改的寄存器没回复.
LZ用的什么型号的AVR?控制什么东西?
我的经验是:当电压降到0.2伏左右的时候,上电,就死掉,经过大量的实验得出这个结果,某些批次的ic死掉的概率极高,我用的是MEGA88
我们也遇到这种情况:上电之后162不工作,复位也没用,只能重上电,出现概率比较高。现在已基本解决这个问题,时钟相关的熔丝位设置问题。
我们曾经把芯片寄回去ATMEL,反馈的信息是 做ic的晶体可能有杂质。。。
我觉得目前遇到的也是这个问题,而且概率还比较高。
89C2051曾经遇到过这个问题,没有其他解决方法。AVR的BOD打开的话没有遇到过。即使关了BOD,通过熔丝打开WDT,缓慢上升电源的时候也还是能醒过来。只要电源能到正常范围,通过外部复位都能启动。
2051也能,那次是因为一个强火花干扰造成的,外部复位不能用了。AVR目前没有遇到那么强的火花干扰。
应该是IC的bug, 设置成内部RC都一样的, 硬件复位不起作用.
就是有这种现象,配置了WDT的熔丝位也会出现死机的情况!
打开BOD功能了吗?
回马潮老师,打开了BOD的!今天在同事在实验时也发现了一次死机,我的配置是:WDT的熔丝位配置了使能,BOD的熔丝位使能,掉电检测电压为:4.0V,同样会死机。都想不到办法了!难道AVR就这么脆弱,不能用在工业设备上!
.听我的客户反映也出现过两次,只有断电后,重新上电,才行。
我肯定打开了BOD,没有使用外部的复位芯片,只用了一个104电容接在复位端,使用了内部狗,并且运行之前狗就是有效的(熔丝)。
我还没有直接发现过。
确有此事,M48,M88存在同样的复位缺陷,我已经用了30多万片了,后期出的片子质量越来越次,做成产品很难检测,嗨为此事公司质量损失300多万,没办法现在用M8,但M8也不是完美的,比较器先天不良率大概2%。现在的ATMEL AVR ==垃圾了
汗。。。这么高的不良率
国内要低价,ATMEL肯定降低了测试要求,所以就苦了大家了。
马老师也提到了BOD,
我们以前遇到了这个问题,
仔细看看时钟相关的容丝位设置与BOD的关系,发现了问题,
后来修正之后就解决了
===&回马潮老师,打开了BOD的!今天在同事在实验时也发现了一次死机,我的配置是:WDT的熔丝位配置了使能,BOD的熔丝位使能,掉电检测电压为:4.0V,同样会死机。都想不到办法了!难道AVR就这么脆弱,不能用在工业设备上!
死机后能重新启动吗?
WDT和BOD只是提高系统可靠性的手段,并不能防止死机.
如果你的程序问题,进入了某个死循环(这个循环中有喂狗操作),那么你看到的情况就是&死机&,但这时WDT和BOD都救不了.
BOD时检测电源电压,低到4V,RESET到AVR.高于4V,重新启动工作.
WDT只是在程序紊乱,不能定时喂狗时产生重启动作的.
两者并不从根本解决死机问题.死机的原因很多,PCB设计的不好,系统抗干扰设计问题,软件设计问题都会造成死机的.
F1赛车可以跑到350KM/H,可你有本事开F1跑到350KM/H的速度吗?你跑不到就是F1不行? 为什么不先找自己的原因?
m48看来确有问题,我以前咨询avr原厂的工程师,也没有结果。
我目前也在使用M48,没有发现什么问题.楼上碰到什么问题?
咨询avr原厂的工程师,是挪威的工程师吗?如果仅是国内AVR代理商的工程师的话,那有很多的水平同你差不多,甚至还不如你.
这情况太正常了。COMS工艺的CPU在强干扰下都是这样的。
可控硅效应。锁死后芯片烫手,复位无效。只能断电解决。
如果用7805稳压的话由于电源内阻大。不会烧毁芯片。如果直接用5V开关电源的话。。。呵呵
所以我设计的看门狗电路全部是给芯片断电而不是给复位脚电平。
这情况8031不会出现80C31就会。
以前我的486电脑也出现过一次。
AT89C51最明显。
AVR也不能幸免。
那些高手说是线路板画的不好。电源没加滤波。去偶电容没加 等等。
可偶加了也是没用的。
看来偶在成为PCB布板高手之前还是不要捣鼓单片机了。
一个好的硬件系统设计,PCB布板的合理等措施,是可以阻断或减少外部对CPU的干扰的,这是豪无疑问.
我曾经设计过一个DC/DC电源,从3.6v升到5v,输出电流瞬时要到2A.第一版的设计,可以工作,但15分钟就发热停止工作了.参考手册修改了PCB的走线,电路完全相同,只是接地点不同,就能长期稳定工作了.
捣鼓单片机不一定需要你是PCB高手.但要设计一个要求高的产品或系统,需要各方面都是高手.
编段程序让单片机输出&1&和&0&容易掌握,有本书,加上一块实验板就可以&捣鼓&了.可是设计一个可靠性高的系统需要相当的实践积累,仅从书上学到点理论是不够的.
关注中......
说得都很有道理,但是m48就是不一样
大家可以到atmel官网去咨询一下怎么回事。
另外,machao老师有没有批量测试过用m48的产品在高低温冲击时(-20摄氏度到60摄氏度),m48就会出现复位不良。
本坛以前的帖子也说过这个问题。
如果说电路问题等等,问题是m8和m48引脚兼容,也不是没用过其他品牌的mcu,独独m48不一样,所以我也不敢用m88
回28楼马潮老师:我的程序在设备上的高压电源不打火的时候随便怎么跑都是没有问题。只有在高压电源打火时,偶尔会发生单片机复位,严重时就会发生死机,只能重新开机才行!我想程序上的问题应该不大,应该是在抗干扰方面的问题。看来以后应该考虑分开供电了,高压电源和AVR的系统分开供电,一个用380V的,一个用照明用电.
02年用W78E51华邦的MCU做ESD测试时就出现,当时烧1A的电源保险丝,IC发热只有关电源再开电源才行。外面是和74系列的相连接。
后来就转用PIC的了。
当时把问题反应给X邦,来了几个工程师试给他们看,开始也是说我PCB不行,后来就用PIC写一个用转接板直接插在原MCU的位置。就可以了。&&*这个月用完了12K的PIC12F510,只有3个不良,(2个是在线下载有问题--探针没接好。另一个是PCB短路)
最近我做一个项目也遇到mega88V死机后外部复位都无效的情况,电源5V,启用串口,串口与485芯片相连(如图),用于远程通信,上电时485芯片处于襟用状态,RXD引脚电平处于三态(不定),但却先使能了RXD接收中断,系统上电5秒后如果无通信则进入掉电休眠状态,单片机晶振停振,等待通信换醒中断(电平变化),休眠时485也处于襟用状态,RXD引脚三态,换醒后485启用,RXD引脚处于上拉电平。在大量测试过程中,偶而出现死机现象,且外部复位无效,有时晶振停振,有时晶振一直工作,但单片机不动,出现该现象有时是上电时就出现,有时是通信过程中出现,但外部复位均无效。我采用了IMP809作为复位电路,按理不会出现复位问题。为了分析原因,我专门做了88的复们测式,让复位脚经4.7K上拉电原,即采用内部复位电路,上电成功后,用稳压电源调单片机电源,缓慢降到0.8V左右(复位临界电压),然后重新回到5V,这时88必定死机,停止工作,但外部复位能成功。之后又接回IMP809,反复重复上面测试过程,未出现死机现象。再回顾原电路,电源采用7550对12V经过75欧限流电电阻稳压,负载能力100mA,单片机和485工作电流小于50mA,但485通信出现冲突时可能大于50mA,但485芯片电源有一个20欧的限流电阻,将485芯片短路,5V电源只降到2.5V左右,不会使88V进入临界区。为什么上电或通信会使88V死机,而且外部复位也无效呢?造成外部复位无效的机理是什么?
& &另外我还做了一个测试,如果M88V配置成内部RC 8M/8,电源调到0.8V再回升到5V,则没发现上述的死机现象。为什么采用外部晶振4M srart_up_time&&258CK/14CK+4.1ms 或 16KCK/14CK+64ms 都会死机而且外部复位无效呢?
& &最后我做了一个最简单的程序,就是上电后红绿LED交替闪亮,对40块板进行上电测试,结果还是出现上述死机现象,但死机后电流并不像各位所说的一样会很大,芯片也不发热。
& &各位有兴趣可加我QQ,一起探讨。
请问tidal,AVR的有哪款单片机的哪个寄存器可以控制RESET引脚?除了熔丝位之外?
我也遇到想你所述问题,单片机死后复位也不起作用,只有断电才能重新启动,死机后单片机也不烫。
我的复位多半是因为干扰引起,因为用在逆变上面。
有时后工作一段时间晶振停振了,用手摸摸晶振活用烙铁焊一下就好了。
故障率大概在5%左右。不知道是什么原因。
加外部的复位IC。RC有时间就会出问题。
我使用M8时也遇到这种情况的
有时候死机后,外部复位没有用,只用断电后在从新上电才能工作,
后来查找原因是由于 5V稳压管坏了,电压输出有8~9V左右高电压,换了一个稳压管就好了
真幸运的是 M8竟然没有烧坏
knight_avr,你所遇到的情况并不是所谓的死机,只是电压过高后芯片处于保护状态,M8的最高耐压是10.5V,在这个范围内芯片都不会坏。
& & 另外,启用内部BOD后死机问题有所改善,死机的概率下降了。
我使用的就是外部复位IC,根本和复位无关,原因正在向ATMEL咨询中,诂计厂家不会告诉是芯片缺陷,顶多说是电路板布线问题。
看了这帖……太可怕了。
不管硬件软件有什么bug,只要不是烧芯片的错,RESET就应该是具有最高优先级的上帝,没有救不回来的。
继续关注……
出这种事一般是电路设计不良。多组电源一般要在MCU电源不足时向MCU供电。
可控硅闩锁的条件是I/O口的电压高于VDD 0.7V以上,或者低于VSS 0.7V以上。
建议你反复检查电路,是否有多组电源,MCU供电不足时I/O口电压是否超限。
楼主的所述现象可能是时钟不起振,如果时钟不起振,延迟计数器就不会就不会有Tout溢出,当然不会产生复位动作。
它的中文手册上如是说:
上电复位(POR) 脉冲由片内检测电路产生。检测电平请参见 Table 15。 无论何时VCC 低
于检测电平POR 即发生。POR 电路可以用来触发启动复位,或者用来检测电源故障。
POR电路保证器件在上电时复位。VCC 达到上电门限电压后触发延迟计数器。在计数器溢
出之前器件一直保持为复位状态。当VCC 下降时,只要低于检测门限,RESET 信号立即
外部复位由外加于RESET 引脚的低电平产生。当复位低电平持续时间大于最小脉冲宽度
时( 参见Table 15) 即触发复位过程,即使此时并没有时钟信号在运行。当外加信号达到
复位门限电压VRST( 上升沿) 时, tTOUT 延时周期开始。延时结束后MCU 即启动。
BOD 电路的开关由熔丝位BODEN控制。当BOD使能后(BODEN被编程),一旦VCC下降到
触发电平以下(VBOT-, Figure 18), BOD 复位立即被激发。当VCC 上升到触发电平以上
时(VBOT+,Figure 18),延时计数器开始计数,一旦超过溢出时间tTOUT,MCU即恢复工作。
看门狗定时器溢出时将产生持续时间为1 个CK 周期的复位脉冲。在脉冲的下降沿,延时
定时器开始对tTOUT 记数。请参见看门狗定时器的具体操作过程。
================================================================
不管POR,RESET,外部REST,BOD,DOG都是由这些复位动作触了延时计数器,延时计数器溢出后复位结束,如果无时钟即时钟不起振,延时计数器总是不会溢出,MCU也就老处于复位状态。
我只是推断,上次有位大侠提到这个问题,你可以用一个有源晶振接在MCU的时钟输入端,看在缓慢上电时有没有“死机”现象,建议试一下将时钟信号加强,编程CKOPT,并在晶振两端加1M~10M的电阻将晶体的Q值降低,晶体旁的电容也是要注意的,它是和你采用的晶体有关的,这样起振要容易些,可能减少这种现象,不过要完避免这种现象外置有源晶振可能是唯一的办法。
这种现象不但AVR存在,C51也存在,理论是所有的单片机都有这种现象,而且在高低温时这种现象更容易出现。
楼上的观点对51有效,对AVR无效,因为他是用内部RC振荡器复位的,这种振荡器不要求电源上升速率,有电就能复位。
我还没有做最后的测试
不过 好像见到过两次 上电没有反映的情况,忘记了是不是接着 仿真器的原因。
以后做测试的时候要好好的做点笔记。
我现在的做法是
1. 加个压敏 用来抵抗浪涌电压
2. 加个耦合电容,用来抵抗电源上叠加的高频脉冲
3. 后面在加个 磁珠,将漏掉的高频再衰减掉,到了单片机 基本上都是比较稳定的电压。 这么做基本上能抵抗绝大多数的干扰环境。
4. 把ckopt打开,发现晶震对干扰不敏感了。但是功耗肯定大了一些。 工业环境 有必要打开,不打开的话。耦合静电都能让它复位。
5. 将bod打开,设置成4.0v。保证内部的EEPROM工作安全。基本上不会丢东西的。
6. 把狗开了。
如果这么做 AVR还他妈的死机,那就没有话说了。只能在说明书的最后面 进行说明了:遇到无反映死机状态,请重新上电。
关注,我用M48有是这问题,有时直接对RESET复位都不行,用ISP操作一下就行
有意思,有空我也观察下
楼主问题遇到过,就是按照【46楼】 fetish 的方式解决的。
(原文件名:111.JPG)
补充一下,我的电路工作一直都很正常。但是电源中断试验过不去,死机,而且复位无效,芯片发热,判断是可控硅锁定。
两组电源,步进电机用48V和单片机的5V,判断是因为48V有大电容,掉电比5V慢,送到单片机的信号只能保证不超过5V,不能保证不超过单片机电源+0.7V,所以电源恢复后可能进入可控硅锁定状态。加了上述电路可以保证5V掉电后48V向单片机供电,且信号幅值不至于导致可控硅效应。MMBT5551虽然容忍功率很小,但是工作时间不超过100毫秒,属于间歇工作方式,此处没有问题。
已经过测试了, 100%是bug了. 只有重新上电.
我看是你的电路设计的bug
47楼说的很在理。另外,AVR内部RC振荡确实不稳定,有次在M8实验室跑的很好,拿到厂区就不行的,是电源干扰问题
我ATmega48也碰到过上电死机,硬件复位都不行。
当AVR死到连硬件复位都不行时......
其实是复位信号一直存在,没有释放而以...........&&这个时候再按复位按钮当然是不会有任何反应。
内部RC却有问题,在产品中使用了内部RC,工作一段时间有的RC本来8M,可后面就变成16M的速度了。
不得不使用外部晶振。
对了想67楼说的。
我电源用的一个小的RC滤波,开了BOD 4v ,高幅震荡,16M,有时候死了连复位都不起作用了。
我觉得我硬件布线应当是蛮不错的。
抗干扰各方面都做的可以,但是还会出现死机现象。
像是没反应一样。复位不起作用。
也有晶振不振的情况。
zhang_sir67799:你用的AVR芯片是什么型号?m88的晶振可以是16M,但M88V最高只能8M,你说的死机现象和我遇到的一样,开启BOD加旁路电容后仍会死机,但开启BOD后有所改善,有时间可以控讨一下啊,QQ
28楼的badboy7903:我也在大批量用MEGA88V,最近遇到问题比较多,希望能与你交流一下,了解一下你遇到的具体情况,QQ,不胜感激!
阿莫电子论坛, 原"中国电子开发网"
, 原www.ourdev.cn, 原www.ouravr.com}

我要回帖

更多关于 stm32看门狗复位 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信