芯片:MSP430FR6972
IDE:IAR6.30
问题描述:
将电路中的电容全部放完电后,插上电源(电池供电),程序出现误动,误动原因是P4.4中断上升沿误触发了,导致逻辑判断出问题了。通过示波器测并没有捕获到这个上升沿(可能方法有问题),而且如果我再插拔电池(相当于电容没放掉电)又没有出现这个问题。
相关代码:
#pragma vector=PORT4_VECTOR
__interrupt void Port_4(void)
{
switch(P4IV)
{
#if BAT_VOLTAGE_MONITOR
case P4IV_P4IFG2:
Task_Handle_Status.Task_Count++;
Task_Handle_Status.Bat_Monitor_Task = 1;
#if LOW_POWER
LPM3_EXIT; //IRQ0中断 退出低功耗读取数据
#endif
break;
#endif
case P4IV_P4IFG4:
if(Indicator_Status.WorkStatus == LowPower)
{
if(P4IN & BIT4)
{
#if TEST_CODE
P7OUT &= ~BIT3//触发指示灯
#endif
Start_ADC();
CT_DET_Down(); //设为下降沿触发
TimerB0_Init(); //开启采样定时器
Indicator_Status.WorkStatus=Test; //上电检测态
Indicator_Status.WorkStatus_Detect=Up_Detect_Flag;
}
}
else
{
CT_DET_Up(); //设为上升沿触发
Indicator_Status.WorkStatus_Detect=Down_Detect_Flag;
}
break;
default :
break;
}
P4IV = 0;
}
相关硬件:前面一个470uf电容,后面一个3300uf电容。这两个放完电,接电池出现误动情况。