• 回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

单片机容易死机,用看门狗了还会死机,请高手请指点

单片机容易死机,用看门狗了还会死机,请高手请指点,
用在220V逆变器自动控制与电力整流后的地线共同GND,
另我做了一个电机转速测量的单片数码显示3位七段LED的单独用5V电池电源也会死机,这说明不是电源问题,我是用台湾义隆78P458单片机.看门狗放在主程序里清零.常看到显示数据不动,转速在转.
500) {this.resized=true; this.width=500; this.alt='这是一张缩略图,点击可放大。\n按住CTRL,滚动鼠标滚轮可自由缩放';this.style.cursor='hand'}" onclick="if(!this.resized) {return true;} else {window.open('http://u.dianyuan.com/bbs/u/66/109541213357019.gif');}" onmousewheel="return imgzoom(this);">500) {this.resized=true; this.width=500; this.alt='这是一张缩略图,点击可放大。\n按住CTRL,滚动鼠标滚轮可自由缩放';this.style.cursor='hand'}" onclick="if(!this.resized) {return true;} else {window.open('http://u.dianyuan.com/bbs/u/66/109541213357100.gif');}" onmousewheel="return imgzoom(this);">
下面是程序只有170条指令 109541213357294.xls
全部回复(32)
正序查看
倒序查看
2008-06-12 18:30
什么片子,用在什么地方了?
0
回复
zl8864
LV.6
3
2008-06-15 12:22
@abing
关于单片机会死机,我也是N年前遇到过,后来没没有遇到这种问题了,我用一片单片机正规做12VDC-220AC50Hz,正弦波,一片单片机完成DC-DC-AC变换.整个样机调式没出现过单片机死机情况.以我的观点要注意的几个问题:单片机供电电源波动不要太大,工作电源不要设计在单片机极限值.输入与输出接一只小电阻也能起到抗干扰作用.与功率地线分开布线你的PCB问题也很大,在自动布线前,要先将重要的几条线先布好,除了定义好布线规则,还要通过增加禁止布线层来控制布线走向.最后要加粗一下地线与电源线.
感谢指点
0
回复
abing
LV.8
4
2008-06-15 13:58
关于单片机会死机,我也是N年前遇到过,后来没没有遇到这种问题了,我用一片单片机正规做12VDC-220AC50Hz,正弦波,一片单片机完成DC-DC-AC变换.整个样机调式没出现过单片机死机情况.
以我的观点要注意的几个问题:
单片机供电电源波动不要太大,工作电源不要设计在单片机极限值.
输入与输出接一只小电阻也能起到抗干扰作用.
与功率地线分开布线

你的PCB问题也很大,在自动布线前,要先将重要的几条线先布好,除了定义好布线规则,还要通过增加禁止布线层来控制布线走向.最后要加粗一下地线与电源线.
0
回复
marco168
LV.4
5
2008-06-16 16:00
@zl8864
感谢指点
**此帖已被管理员删除**
0
回复
2008-06-16 22:44
@marco168
**此帖已被管理员删除**
以我个人的经验来看,单片机的死机无非就是:电源的不稳定,杂讯的干扰,程序的跑飞,
我觉得重点看 电源是否稳定--你可以单独用电源供,以测试是否为电源的问题

程序跑飞=主要是逻辑的问题,,很多时候进入死循环了,看门狗无法清0,就死了,,这个看加条清看门狗的指令在你认为可能跑飞的程序段中调试啦
0
回复
2008-06-16 22:49
@listenwinds
以我个人的经验来看,单片机的死机无非就是:电源的不稳定,杂讯的干扰,程序的跑飞,我觉得重点看电源是否稳定--你可以单独用电源供,以测试是否为电源的问题程序跑飞=主要是逻辑的问题,,很多时候进入死循环了,看门狗无法清0,就死了,,这个看加条清看门狗的指令在你认为可能跑飞的程序段中调试啦
还有点,单独电源不一定是好的,

因为你内部有干扰呵,我之前也碰到这样的问题,

主要是数字地和模拟地没处理好,导致单片机死机,

后来我把地线分开分别单独接地,采用最短地,杂讯全部往退偶电容处,,

另外,你看门狗放主程序查这个问题应该用处不大的,很明显是你的程序可能在某个小程序运行时间过长,就会造成循环回来的时候看门狗还没用清而reset,

你那个layout太烂了点吧,,兄弟
0
回复
zl8864
LV.6
8
2008-06-17 20:58
@listenwinds
还有点,单独电源不一定是好的,因为你内部有干扰呵,我之前也碰到这样的问题,主要是数字地和模拟地没处理好,导致单片机死机,后来我把地线分开分别单独接地,采用最短地,杂讯全部往退偶电容处,,另外,你看门狗放主程序查这个问题应该用处不大的,很明显是你的程序可能在某个小程序运行时间过长,就会造成循环回来的时候看门狗还没用清而reset,你那个layout太烂了点吧,,兄弟
是的,单片机应用是需要电子综合技术的,谢谢你的宝贵经验!
0
回复
yt2005
LV.2
9
2008-06-21 09:46
@listenwinds
还有点,单独电源不一定是好的,因为你内部有干扰呵,我之前也碰到这样的问题,主要是数字地和模拟地没处理好,导致单片机死机,后来我把地线分开分别单独接地,采用最短地,杂讯全部往退偶电容处,,另外,你看门狗放主程序查这个问题应该用处不大的,很明显是你的程序可能在某个小程序运行时间过长,就会造成循环回来的时候看门狗还没用清而reset,你那个layout太烂了点吧,,兄弟
看门狗不放主程序,放在什么地方?放中断里?程序跑飞引起死机,看门狗丝毫不起作用.好的程序实时性要好,一个程序执行一个循环要超过100MS就是一个不合格的程序.
0
回复
zl8864
LV.6
10
2008-06-22 11:22
@yt2005
看门狗不放主程序,放在什么地方?放中断里?程序跑飞引起死机,看门狗丝毫不起作用.好的程序实时性要好,一个程序执行一个循环要超过100MS就是一个不合格的程序.
如何做到"好的程序实时性要好",能祥细说明!
0
回复
伟哥
LV.4
11
2008-06-22 12:05
@zl8864
如何做到"好的程序实时性要好",能祥细说明!
你如果是用上面的电路板的话,不死机才不正常.另外整个程序没有看到一个容错的地方.程序架构和任务时间片分配极不合理.
0
回复
zl8864
LV.6
12
2008-06-23 13:05
@伟哥
你如果是用上面的电路板的话,不死机才不正常.另外整个程序没有看到一个容错的地方.程序架构和任务时间片分配极不合理.
如何做到"好的程序容错好",能祥细说明!
0
回复
yt2005
LV.2
13
2008-07-05 10:26
@zl8864
如何做到"好的程序实时性要好",能祥细说明!
程序要分时,分批处理,满足条件后才执行,关于实时性、优先级高的,要合理利用中断.主程序内不要有延时程序,或者死循环(特殊情况除外.另外重要的数据要备份,最好做软件陷阱和在程序空白处写拦截程序,以防程序跑飞.浅薄之见,希望对你有所帮助.
0
回复
zl8864
LV.6
14
2008-07-05 18:56
@yt2005
程序要分时,分批处理,满足条件后才执行,关于实时性、优先级高的,要合理利用中断.主程序内不要有延时程序,或者死循环(特殊情况除外.另外重要的数据要备份,最好做软件陷阱和在程序空白处写拦截程序,以防程序跑飞.浅薄之见,希望对你有所帮助.
感谢指点,能示例一个.书上找不到,防止死机说明例
0
回复
abing
LV.8
15
2008-07-05 23:48
@zl8864
感谢指点,能示例一个.书上找不到,防止死机说明例
张先生真是太历害了,还要搞软件
0
回复
strike
LV.4
16
2008-07-16 11:05
兄台,加了看门狗与单片机死机是两回事,并非加了看门狗就不死机,加了看门狗以后死机可以自己恢复过来,重新启动.

单片机死机的原因很多.最好是用变压器离电源,不要用开关电源,还有你的PCB也好意思发出来给大家看.
0
回复
abing
LV.8
17
2008-07-16 14:22
@strike
兄台,加了看门狗与单片机死机是两回事,并非加了看门狗就不死机,加了看门狗以后死机可以自己恢复过来,重新启动.单片机死机的原因很多.最好是用变压器离电源,不要用开关电源,还有你的PCB也好意思发出来给大家看.
我在4KV的高压控制里直接采用单片机控制.还有在变频器里我们是采用开关电源供电的.

除了在硬件上下功夫还要注意软件是否有出现死循环的情况
0
回复
zl8864
LV.6
18
2008-07-16 18:58
@abing
我在4KV的高压控制里直接采用单片机控制.还有在变频器里我们是采用开关电源供电的.除了在硬件上下功夫还要注意软件是否有出现死循环的情况
在线仿真都 没有进入死机,为什么放在变频控制的电动机傍测量电机转速时就会死机
0
回复
abing
LV.8
19
2008-07-17 08:27
@zl8864
在线仿真都没有进入死机,为什么放在变频控制的电动机傍测量电机转速时就会死机
那是你的PCB抗干扰能力太差了,变频器是一个很大的干扰源,特别是共接在电源上时情况更严重.最好的方法只能是处理好PCB的抗干扰能力.

在变频器里的MCU电路需要更强的抗干扰能力,有的不但接在近开关电源部份还在高压侧输出SPWM信号以及对各种电压电流模拟信号采样,响应数字通信和其它保护信号等.
0
回复
strike
LV.4
20
2008-08-05 15:45
@zl8864
在线仿真都没有进入死机,为什么放在变频控制的电动机傍测量电机转速时就会死机
发现问题好啊,没有像我,做了一个弱电控制强电的,在外面试正常,刚开始工作

时也正常,NND,工作了一星期或者十几天才不正常.后面做一些些改进,单片机的干

扰问题才解决啊,你这东西还没有出门,就发现问题.岂不乐哉?
0
回复
hackys
LV.3
21
2008-11-22 11:16
旁路电容加了吗?电源线加宽了吗?其他电源问题也要注意
还有你看门狗用的是内部的还是外部的,如果是内部的死机有可能是硬件问题也有可能是软件问题,比如有些单片机在中断里面有while(1)的话看门狗也没用,强烈建议用片外看门狗,很便宜!不要为了那么一两块钱冒死机的风险.
0
回复
zl8864
LV.6
22
2008-11-24 21:57
@hackys
旁路电容加了吗?电源线加宽了吗?其他电源问题也要注意还有你看门狗用的是内部的还是外部的,如果是内部的死机有可能是硬件问题也有可能是软件问题,比如有些单片机在中断里面有while(1)的话看门狗也没用,强烈建议用片外看门狗,很便宜!不要为了那么一两块钱冒死机的风险.
请先生告诉一下:你用过的“片外看门狗”供应商
0
回复
hackys
LV.3
23
2008-11-27 13:16
@zl8864
请先生告诉一下:你用过的“片外看门狗”供应商
我用过的几合一的芯片,看门狗+RTC+电源监控+FRAM,如果你没其他要求只是外部看门狗的话还是挺容易找的,比如IMP706
0
回复
zl8864
LV.6
24
2009-07-16 19:28
@hackys
我用过的几合一的芯片,看门狗+RTC+电源监控+FRAM,如果你没其他要求只是外部看门狗的话还是挺容易找的,比如IMP706
我现在在搞全世界最简单的纯硬件并网逆变器 具体见本论坛http://bbs.dianyuan.com/topic/481703
0
回复
listenwinds
LV.3
25
2009-07-22 10:08
@yt2005
看门狗不放主程序,放在什么地方?放中断里?程序跑飞引起死机,看门狗丝毫不起作用.好的程序实时性要好,一个程序执行一个循环要超过100MS就是一个不合格的程序.
呵呵,我是说可以在子程序里清看门狗的,以便差差是哪个程序段出现问题,当然这是很笨的方法,
0
回复
zl8864
LV.6
26
2009-11-18 19:53
@strike
兄台,加了看门狗与单片机死机是两回事,并非加了看门狗就不死机,加了看门狗以后死机可以自己恢复过来,重新启动.单片机死机的原因很多.最好是用变压器离电源,不要用开关电源,还有你的PCB也好意思发出来给大家看.
先生你好,你的PCB贴一个出来给大家开开眼界
0
回复
ddmushroom
LV.4
27
2009-12-12 15:59
这个板画得....

地线都要成环了

在单片机下面铺整块铜做参考地,去耦电容和晶振离脚近点,继电器电源不要和单片机共用
0
回复
zl8864
LV.6
28
2009-12-13 21:53
@ddmushroom
这个板画得....地线都要成环了在单片机下面铺整块铜做参考地,去耦电容和晶振离脚近点,继电器电源不要和单片机共用
因为是单面板布线的空间太紧张,下面铺整块铜做参考地那只能用双面板了,谢谢指点
0
回复
2009-12-21 21:21
@zl8864
因为是单面板布线的空间太紧张,下面铺整块铜做参考地那只能用双面板了,谢谢指点
顶顶
0
回复
zl8864
LV.6
30
2009-12-22 13:00
@zl8864
因为是单面板布线的空间太紧张,下面铺整块铜做参考地那只能用双面板了,谢谢指点
主个电路板做得还可以吧,请多指点
0
回复
zl8864
LV.6
31
2009-12-22 13:01
@ddmushroom
这个板画得....地线都要成环了在单片机下面铺整块铜做参考地,去耦电容和晶振离脚近点,继电器电源不要和单片机共用
这个电路板做得还可以吧,请多指点500) {this.resized=true; this.width=500; this.alt='这是一张缩略图,点击可放大。\n按住CTRL,滚动鼠标滚轮可自由缩放';this.style.cursor='hand'}" onclick="if(!this.resized) {return true;} else {window.open('http://u.dianyuan.com/bbs/u/84/109541261458113.jpg');}" onmousewheel="return imgzoom(this);">
0
回复