打印

MCU复位仍无法退出异常状态?(不是死锁,应该和JTAG相关)

[复制链接]
3719|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yzgwxflove|  楼主 | 2009-2-11 10:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
整了几天了,没有搞掂,大家给点思路,谢谢了。

系统如下图,主要功能是检测外部开关和脉冲,输出驱动高频电磁阀。



使用到的中断有:捕捉(超时)中断,50us中断,串口中断,200ms中断,ADC中断。

程序结构:主循环检测标志做ADC工程量变换、错误状态检查、通信协议解析。主要的工作在中断完成。

故障:断开图中红圈出连线,在高频电磁阀工作时,不停的通断该连线,很容易造成“半死机”,

        表现为,4路电磁阀停止工作,程序读取外部开关状态始终是1,此时,CPU并没有停止工作,

        主循环正常,4路捕捉中的超时中断正常,50us中断正常,200ms中断正常,ADC中断正常,

        4路捕捉中的捕捉中断失效,串口中断失效,JTAG调试失效

        手动复位后仍然异常,重新上电后正常。

先不考虑抗干扰的性能问题,大家如何理解CPU的这种异常行为?

相关帖子

沙发
8210zbb| | 2009-2-11 11:17 | 只看该作者

电磁阀要反向并联二极管啊

电磁阀要反向并联二极管啊,

驱动MOS管的电路有加光耦吗?

MCU的电源和驱动部分的电源最好是隔离的。

使用特权

评论回复
板凳
yzgwxflove|  楼主 | 2009-2-11 11:26 | 只看该作者

re

谢谢,
吸收回路在PCB(受条件约束),没有光耦。
现在好像是MCU的部分部件锁死了,除了重新上电能不能退出这种状态?

使用特权

评论回复
地板
yzgwxflove|  楼主 | 2009-2-11 14:10 | 只看该作者

-

像这种情况,还不如彻底死翘翘了好,半身不遂的难整啊。

使用特权

评论回复
5
machunshui| | 2009-2-11 19:50 | 只看该作者

这是一个头疼地问题

这是一个头疼的问题.

以前的在的一个公司做的一款电力系统监控产品,

时不时就有这样的问题,

后来没办法,加了外部看门狗,

看门狗的输出控制电源,

当死锁的时候,

就拉电重新上电复位.

使用特权

评论回复
6
xwj| | 2009-2-11 20:15 | 只看该作者

看现象是干扰太强导致CPU死锁了,此时复位都是没用的

应该从今年增强抗干扰性着手,而不是“先不考虑抗干扰的性能”!

比如:
电路设计上,用到大电流电磁阀是必须加光电隔离(电气上必须完全隔离);
缩短晶振引线和到地环路长度,敏感引脚尽可能包地;
增强电源退耦
干扰很强的环境所有外接引脚必须有LC滤波器件和限流限压措施
强干扰时给MCU部分加个屏蔽罩(一般没必要)

使用特权

评论回复
7
diannaoza| | 2009-2-12 03:42 | 只看该作者

这样的死机,不用做这么多功能

依次启用一个功能。保证功能正常再全部开启

使用特权

评论回复
8
notpower| | 2009-2-12 09:47 | 只看该作者

什么型号的单片机?

死锁后量一下晶振两脚间的电压。和正常时候是不是一样的?

使用特权

评论回复
9
yzgwxflove|  楼主 | 2009-2-12 11:03 | 只看该作者

re

谢谢大家的意见,

machunshui的方法倒是个好的思路,只是不太适合我这的应用环境。

老X说的方法倒是用了一些,包地、缩短引线等,只是无法加光耦,因为不能用DC/DC,这是个必须的限制,并且,为了电磁阀快速关断,吸收回路在电磁阀完全关断的过程必须断开。

昨天做了试验,控制板用电瓶供电,电磁阀驱动用12V 12A开关电源供电,仍然出现死锁现象,是不是说明干扰不是通过电源回路?应该是辐射?解决思路如何?

notpower:
用的是流明诺瑞Cortex-M3核的LM3S315,死锁后,只有少部分功能异常,并且定时依然准确,因此晶振不会有问题。

使用特权

评论回复
10
machunshui| | 2009-2-12 11:58 | 只看该作者

好像死锁一般是电源问题或者IO口电路问题

好像死锁一般是电源问题或者IO口电路问题.

IO口串接小电阻,试试看

使用特权

评论回复
11
yzgwxflove|  楼主 | 2009-2-12 12:59 | 只看该作者

re

9楼的试验说明,应该不是电源的问题,IO都有电阻。

使用特权

评论回复
12
yzgwxflove|  楼主 | 2009-2-12 13:40 | 只看该作者

RE

各位,可能并不是死锁!

又做了试验,发现如下现象:当发生“半死”,如果JTAG线插在板上,那么通断信号发生器的电源(不是通断信号输出),MCU有极高的几率“复活”,如果JTAG线拔下,MCU不能退出“半死”!

Why?....Why???

使用特权

评论回复
13
hab2000| | 2009-2-12 15:12 | 只看该作者

将JTAG的引脚接地处理再试试。

使用特权

评论回复
14
yzgwxflove|  楼主 | 2009-2-13 10:05 | 只看该作者

进展

hab2000:
按照你的思路,将JTAG的各个输入脚逐次接地,当将TCLK接地后,不断试验,目前没有出现“半死机”现象。

那么,实际PCB中的JTAG引脚应该怎么处理?我现在是将JTAG的所有引脚都通过10K电阻上拉到3.3v。

照目前看解决办法可能找到了,可是...Why?  大家讨论一下吧。

使用特权

评论回复
15
yzgwxflove|  楼主 | 2009-2-13 10:39 | 只看该作者

RE

呵呵,阶段性小结:

在1楼的叙述中,我注意到这样一个细节和外部IO相关的功能几乎都失效了,但是内核的功能几乎都正常(比如各个定时器、ADC)。

在14楼的处理方法中:“将TCLK接地后,不断试验,目前没有出现“半死机”现象。”

那么,我的疑问就是:JTAG为何只影响了IO?

我并不了解JTAG,虽然总是用它调试,不过好在我们有网络。看到如下介绍:


边界扫描(Boundary-Scan)技术的基本思想是在靠近芯片的输入/输出引脚上增加一个移位寄存器单元,
也就是边界扫描寄存器(Boundary-Scan Register)。
当芯片处于调试状态时,边界扫描寄存器可以将芯片和外围的输入/输出隔离开来。
通过边界扫描寄存器单元,可以实现对芯片输入/输出信号的观察和控制。
对于芯片的输入引脚,可以通过与之相连的边界扫描寄存器单元把信号(数据)加载到该引脚中去;
对于芯片的输出引脚,也可以通过与之相连的边界扫描寄存器“捕获”该引脚上的输出信号。
在正常的运行状态下,边界扫描寄存器对芯片来说是透明的,所以正常的运行不会受到任何影响。
这样,边界扫描寄存器提供了一种便捷的方式用于观测和控制所需调试的芯片。
另外,芯片输入/输出引脚上的边界扫描(移位)寄存器单元可以相互连接起来,任芯片的周围形成一个边界扫描链(Boundary-Scan Chain)。
边界扫描链可以串行地输入和输出,通过相应的时钟信号和控制信号,就可以方便地观察和控制处在调试状态下的芯片。

那么,我们能不能假设:非正常状态下,JTAG阻止了MCU对IO的操作?

使用特权

评论回复
16
yzgwxflove|  楼主 | 2009-2-14 09:54 | 只看该作者

-

今天要陪老情人去了。

祝大家情人节快乐!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

179

帖子

1

粉丝