TMS320F280049: CLA在计算有效值时出现异常

Part Number: TMS320F280049

static inline void RMS_Value_CLA_Cal(struct RMS_CAL *RMS_Cal)

{

if(RMS_Cal->DataIn<1000)

{

RMS_Cal->DataInSqu=(RMS_Cal->DataIn)*(RMS_Cal->DataIn);

RMS_Cal->DataADD+=RMS_Cal->DataInSqu;

RMS_Cal->DataADD-=RMS_Cal->DATA_Record[RMS_Cal->Count];

RMS_Cal->DATA_Record[RMS_Cal->Count]=RMS_Cal->DataInSqu;

RMS_Cal->DataOut=CLAsqrt(RMS_Cal->DataADD*DATA_DIV);

RMS_Cal->Count++;

if(RMS_Cal->Count>=DATA_LONG)

{

RMS_Cal->Count=0;

}

}

}

上述这段代码是在CLA.h中定义的,然后在.cla文件中用于进行采样处理

CLA_AC_CHARGING_VOLTAGE=((AdcbResultRegs.ADCRESULT4+AdcbResultRegs.ADCRESULT5)*0.5*0.000244140625*3.2*1.5625-2.64)*205.5076*0.9946-4.2963;

CLA_RMS_AC_CHARGING_VOLTAGE.DataIn=CLA_AC_CHARGING_VOLTAGE;

RMS_Value_CLA_Cal(&CLA_RMS_AC_CHARGING_VOLTAGE);

AC_CHARGING_DATA_OUT=CLA_RMS_AC_CHARGING_VOLTAGE.DataOut;

处理完成后输出的DataADD、DataOut值在Task1第一次运行时正常但后面会越来越小,是由于cla处理精度的问题还是在进行加减乘除运算的问题?