整了几天了,没有搞掂,大家给点思路,谢谢了。
系统如下图,主要功能是检测外部开关和脉冲,输出驱动高频电磁阀。
使用到的中断有:捕捉(超时)中断,50us中断,串口中断,200ms中断,ADC中断。
程序结构:主循环检测标志做ADC工程量变换、错误状态检查、通信协议解析。主要的工作在中断完成。
故障:断开图中红圈出连线,在高频电磁阀工作时,不停的通断该连线,很容易造成“半死机”,
表现为,4路电磁阀停止工作,程序读取外部开关状态始终是1,此时,CPU并没有停止工作,
主循环正常,4路捕捉中的超时中断正常,50us中断正常,200ms中断正常,ADC中断正常,
4路捕捉中的捕捉中断失效,串口中断失效,JTAG调试失效。
手动复位后仍然异常,重新上电后正常。
先不考虑抗干扰的性能问题,大家如何理解CPU的这种异常行为? |