CPU中开有2个中断用过该数据例如A,MCBSP中断和Timer0中断,MCBSP中断是每秒50K次左右,Timer0中断是1ms一次;
MCBSP接外部AD芯片,实际应用为检测到AD值大于某个值时,变更A的值,此中断中只有写A的动作;Timer0对A的值进行检测,只有读A的动作;实际运行时总会有一定的几率出现写A不成功;而此时数据B(在数据A有写入动作时同时动作,只在MCBSP中断和主程序调用)则不会出错;这种属于什么情况?
设备正常运行一次会出现一次写A的动作,测试中设备运行100-2000次 不等会随机出现一次异常。
程序如下:
MCBSP中断中:
if( AdcCH1_Buf > RunData.Data.PSetLoad )
{
if(RunData.Data.Mode.PRunLock==0)
{
AxisX_Move.Axis_Data.Status.AccStatus = 2;
RunData.Data.Mode.PRunLock = 1;
}
}
Timer0中断中:
if( AxisX_Move.Axis_Data.Status.AccStatus == 0 )
{
}
else if( AxisX_Move.Axis_Data.Status.AccStatus == 2 )
{
}
运行中AxisX_Move.Axis_Data.Status.AccStatus会出现写入不成功情况,而RunData.Data.Mode.PRunLock 则不会有问题!