TI中文支持网
TI专业的中文技术问题搜集分享网站

MSP430F5438A死机,I/O管脚全部高电平,请求分析原因及解决方法

本人用MSP430F5438A单片机核心板,转接到PCB板上,用于检测32个数字量输入点,单片机内部逻辑运算后驱动74HC573(两块),再通过74HC573驱动光耦(16个)。光耦驱动继电器。其中单片机供电采用交流转5V的电源输入核心板,核心板将其转化成3.3V电压。

目前问题是有两种情况,一种是小概率的偶发性死机,所有I/O输出管脚为ON,导致所有继电器吸合。第二种情况是只要有接触器控制侧线圈与单片机供电电源在同一条220V的供电母线上,接触器控制侧线圈得电,接触器吸合,单片机运行正常,但是接触器线圈释放时,会造成单片机死机,所有I/O输出管脚为ON,导致所有继电器吸合。按复位按钮也没用,故障复现率几乎100%,请教下原因及解决方法,麻烦各位了,谢谢。

附件中是核心板的电路图。TR-4M3B_Ver_1_3.pdf

Susan Yang:

'接触器线圈释放时,会造成单片机死机,所有I/O输出管脚为ON,导致所有继电器吸合'

有可能是程序代码上的问题。能否请您给出相关代码?

灰小子:

这种情况很可能是被干扰造成的。建议上传完整的电路图

user3546312:

回复 灰小子:

核心板就是完整电路图,I/O输入和输出管脚全部由光耦隔离,怀疑是不是干扰大搜单片机电源了?

user3546312:

回复 Susan Yang:

I/O管脚置位判断和执行程序如下:
OA_1=OMA_1^L_1^L_2;//输出继电器逻辑运算OA_2=OMA_2^L_3^L_4;OA_3=OMA_3^L_5;OA_4=OMA_4^L_6;OA_5=OMA_5^L_7;OA_6=OMA_6^L_8;OA_7=OMA_7^L_9;OA_8=OMA_8;OB_1=OMB_1^R_1;OB_2=OMB_2^R_2;OB_3=OMB_3^R_3;OB_4=OMB_4^R_4;OB_5=OMB_5^R_5;OB_6=OMB_6^R_6;OB_7=OMB_7;OB_8=OMB_8;

if(OA_1==0x01){P10OUT |=BIT0;}else{P10OUT &=~BIT0;}if(OA_2==0x01){P10OUT |=BIT1;}else{P10OUT &=~BIT1;}if(OA_3==0x01){P10OUT |=BIT2;}else{P10OUT &=~BIT2;}if(OA_4==0x01){P10OUT |=BIT3;}else{P10OUT &=~BIT3;}if(OA_5==0x01){P10OUT |=BIT4;}else{P10OUT &=~BIT4;}if(OA_6==0x01){P10OUT |=BIT5;}else{P10OUT &=~BIT5;}if(OA_7==0x01){P10OUT |=BIT6;}else{P10OUT &=~BIT6;}if(OA_8==0x01){P10OUT |=BIT7;}else{P10OUT &=~BIT7;}if(OB_1==0x01){P2OUT |=BIT0;}else{P2OUT &=~BIT0;}if(OB_2==0x01){P2OUT |=BIT1;}else{P2OUT &=~BIT1;}if(OB_3==0x01){P2OUT |=BIT2;}else{P2OUT &=~BIT2;}if(OB_4==0x01){P2OUT |=BIT3;}else{P2OUT &=~BIT3;}if(OB_5==0x01){P2OUT |=BIT4;}else{P2OUT &=~BIT4;}if(OB_6==0x01){P2OUT |=BIT5;}else{P2OUT &=~BIT5;}if(OB_7==0x01){P2OUT |=BIT6;}else{P2OUT &=~BIT6;}if(OB_8==0x01){P2OUT |=BIT7;}else{P2OUT &=~BIT7;}

赞(0)
未经允许不得转载:TI中文支持网 » MSP430F5438A死机,I/O管脚全部高电平,请求分析原因及解决方法
分享到: 更多 (0)