void WEIGHT_Init(void)
{
LONG_VAL lvTemp;
UN_BYTE_FLOATLONG ubfTemp;
Weight[0].Value = 0;
Weight[0].EventState[0] = WEIGHT_NO_INIT;
Weight[0].EventState[1] = WEIGHT_NO_INIT;
API_RecordRead( FileReg, MREG_WEIGHT );
WEIGHT_NumberActive = FileReg[0].idata[ 0 ];
if(WEIGHT_NumberActive == 0 || WEIGHT_NumberActive > 3) WEIGHT_NumberActive = 1;
API_RecordRead( FileReg, MREG_WEIGHT_OFFSET );
lvTemp.byte.MB = FileReg[0].idata[ 0 ];
lvTemp.byte.UB = FileReg[0].idata[ 1 ];
lvTemp.byte.HB = FileReg[0].idata[ 2 ];
lvTemp.byte.LB = FileReg[0].idata[ 3 ];
ubfTemp.UL = lvTemp.Val;
Weight[0].TempConst = ubfTemp.F;
API_RecordRead( FileReg, MREG_WEIGHT_RANGE );
lvTemp.byte.MB = FileReg[0].idata[ 0 ];
lvTemp.byte.UB = FileReg[0].idata[ 1 ];
lvTemp.byte.HB = FileReg[0].idata[ 2 ];
lvTemp.byte.LB = FileReg[0].idata[ 3 ];
Weight[0].RangeMin[0] = lvTemp.Val;
lvTemp.byte.MB = FileReg[0].idata[ 4 ];
lvTemp.byte.UB = FileReg[0].idata[ 5 ];
lvTemp.byte.HB = FileReg[0].idata[ 6 ];
lvTemp.byte.LB = FileReg[0].idata[ 7 ];
Weight[0].RangeMax[0] = lvTemp.Val;
API_RecordRead( FileReg, MREG_WEIGHT_RANGE2 );
lvTemp.byte.MB = FileReg[0].idata[ 0 ];
lvTemp.byte.UB = FileReg[0].idata[ 1 ];
lvTemp.byte.HB = FileReg[0].idata[ 2 ];
lvTemp.byte.LB = FileReg[0].idata[ 3 ];
Weight[0].RangeMin[1] = lvTemp.Val;
lvTemp.byte.MB = FileReg[0].idata[ 4 ];
lvTemp.byte.UB = FileReg[0].idata[ 5 ];
lvTemp.byte.HB = FileReg[0].idata[ 6 ];
lvTemp.byte.LB = FileReg[0].idata[ 7 ];
Weight[0].RangeMax[1] = lvTemp.Val;
API_RecordRead( FileReg, MREG_WEIGHT_VALUE_CALIB );
lvTemp.byte.MB = FileReg[0].idata[ 0 ];
lvTemp.byte.UB = FileReg[0].idata[ 1 ];
lvTemp.byte.HB = FileReg[0].idata[ 2 ];
lvTemp.byte.LB = FileReg[0].idata[ 3 ];
ubfTemp.UL = lvTemp.Val;
Weight[0].Calib = ubfTemp.F;
lvTemp.byte.MB = FileReg[0].idata[ 4 ];
lvTemp.byte.UB = FileReg[0].idata[ 5 ];
lvTemp.byte.HB = FileReg[0].idata[ 6 ];
lvTemp.byte.LB = FileReg[0].idata[ 7 ];
Weight[0].CalibTemp = lvTemp.Val;
API_RecordRead( FileReg, MREG_WEIGHT_FULL_CALIB );
lvTemp.byte.MB = FileReg[0].idata[ 0 ];
lvTemp.byte.UB = FileReg[0].idata[ 1 ];
lvTemp.byte.HB = FileReg[0].idata[ 2 ];
lvTemp.byte.LB = FileReg[0].idata[ 3 ];
#if !defined(OCWB_GW)
SPI_AD77xx_WriteFullScale(SPI_AD77xx_PORT_1, lvTemp.Val);
#endif
API_RecordRead( FileReg, MREG_WEIGHT_ZERO_CALIB );
lvTemp.byte.MB = FileReg[0].idata[ 0 ];
lvTemp.byte.UB = FileReg[0].idata[ 1 ];
lvTemp.byte.HB = FileReg[0].idata[ 2 ];
lvTemp.byte.LB = FileReg[0].idata[ 3 ];
#if !defined(OCWB_GW)
SPI_AD77xx_WriteOffset(SPI_AD77xx_PORT_1, lvTemp.Val);
#else
Weight[0].CalibZero = lvTemp.Val;
#endif
API_RecordRead( FileReg, MREG_WEIGHT_MAXIMUM );
lvTemp.byte.MB = FileReg[0].idata[ 0 ];
lvTemp.byte.UB = FileReg[0].idata[ 1 ];
lvTemp.byte.HB = FileReg[0].idata[ 2 ];
lvTemp.byte.LB = FileReg[0].idata[ 3 ];
Weight[0].Max = lvTemp.Val;
API_RecordRead( FileReg, MREG_WEIGHT_TARE );
lvTemp.byte.MB = FileReg[0].idata[ 0 ];
lvTemp.byte.UB = FileReg[0].idata[ 1 ];
lvTemp.byte.HB = FileReg[0].idata[ 2 ];
lvTemp.byte.LB = FileReg[0].idata[ 3 ];
Weight[0].Tare = lvTemp.Val;
#if defined(WEIGHT2_ENABLE)
Weight[1].Value = 0;
Weight[1].EventState[0] = WEIGHT_NO_INIT;
Weight[1].EventState[1] = WEIGHT_NO_INIT;
API_RecordRead( FileReg, MREG_WEIGHT2_OFFSET );
lvTemp.byte.MB = FileReg[0].idata[ 0 ];
lvTemp.byte.UB = FileReg[0].idata[ 1 ];
lvTemp.byte.HB = FileReg[0].idata[ 2 ];
lvTemp.byte.LB = FileReg[0].idata[ 3 ];
ubfTemp.UL = lvTemp.Val;
Weight[1].TempConst = ubfTemp.F;
API_RecordRead( FileReg, MREG_WEIGHT2_RANGE );
lvTemp.byte.MB = FileReg[0].idata[ 0 ];
lvTemp.byte.UB = FileReg[0].idata[ 1 ];
lvTemp.byte.HB = FileReg[0].idata[ 2 ];
lvTemp.byte.LB = FileReg[0].idata[ 3 ];
Weight[1].RangeMin[0] = lvTemp.Val;
lvTemp.byte.MB = FileReg[0].idata[ 4 ];
lvTemp.byte.UB = FileReg[0].idata[ 5 ];
lvTemp.byte.HB = FileReg[0].idata[ 6 ];
lvTemp.byte.LB = FileReg[0].idata[ 7 ];
Weight[1].RangeMax[0] = lvTemp.Val;
API_RecordRead( FileReg, MREG_WEIGHT2_RANGE2 );
lvTemp.byte.MB = FileReg[0].idata[ 0 ];
lvTemp.byte.UB = FileReg[0].idata[ 1 ];
lvTemp.byte.HB = FileReg[0].idata[ 2 ];
lvTemp.byte.LB = FileReg[0].idata[ 3 ];
Weight[1].RangeMin[1] = lvTemp.Val;
lvTemp.byte.MB = FileReg[0].idata[ 4 ];
lvTemp.byte.UB = FileReg[0].idata[ 5 ];
lvTemp.byte.HB = FileReg[0].idata[ 6 ];
lvTemp.byte.LB = FileReg[0].idata[ 7 ];
Weight[1].RangeMax[1] = lvTemp.Val;
API_RecordRead( FileReg, MREG_WEIGHT2_VALUE_CALIB );
lvTemp.byte.MB = FileReg[0].idata[ 0 ];
lvTemp.byte.UB = FileReg[0].idata[ 1 ];
lvTemp.byte.HB = FileReg[0].idata[ 2 ];
lvTemp.byte.LB = FileReg[0].idata[ 3 ];
ubfTemp.UL = lvTemp.Val;
Weight[1].Calib = ubfTemp.F;
lvTemp.byte.MB = FileReg[0].idata[ 4 ];
lvTemp.byte.UB = FileReg[0].idata[ 5 ];
lvTemp.byte.HB = FileReg[0].idata[ 6 ];
lvTemp.byte.LB = FileReg[0].idata[ 7 ];
Weight[1].CalibTemp = lvTemp.Val;
API_RecordRead( FileReg, MREG_WEIGHT2_FULL_CALIB );
lvTemp.byte.MB = FileReg[0].idata[ 0 ];
lvTemp.byte.UB = FileReg[0].idata[ 1 ];
lvTemp.byte.HB = FileReg[0].idata[ 2 ];
lvTemp.byte.LB = FileReg[0].idata[ 3 ];
#if !defined(OCWB_GW)
SPI_AD77xx_WriteFullScale(SPI_AD77xx_PORT_2, lvTemp.Val);
#endif
API_RecordRead( FileReg, MREG_WEIGHT2_ZERO_CALIB );
lvTemp.byte.MB = FileReg[0].idata[ 0 ];
lvTemp.byte.UB = FileReg[0].idata[ 1 ];
lvTemp.byte.HB = FileReg[0].idata[ 2 ];
lvTemp.byte.LB = FileReg[0].idata[ 3 ];
#if !defined(OCWB_GW)
SPI_AD77xx_WriteOffset(SPI_AD77xx_PORT_2, lvTemp.Val);
#else
Weight[1].CalibZero = lvTemp.Val;
#endif
API_RecordRead( FileReg, MREG_WEIGHT2_MAXIMUM );
lvTemp.byte.MB = FileReg[0].idata[ 0 ];
lvTemp.byte.UB = FileReg[0].idata[ 1 ];
lvTemp.byte.HB = FileReg[0].idata[ 2 ];
lvTemp.byte.LB = FileReg[0].idata[ 3 ];
Weight[1].Max = lvTemp.Val;
API_RecordRead( FileReg, MREG_WEIGHT2_TARE );
lvTemp.byte.MB = FileReg[0].idata[ 0 ];
lvTemp.byte.UB = FileReg[0].idata[ 1 ];
lvTemp.byte.HB = FileReg[0].idata[ 2 ];
lvTemp.byte.LB = FileReg[0].idata[ 3 ];
Weight[1].Tare = lvTemp.Val;
#endif
#if defined(WEIGHT3_ENABLE)
Weight[2].Value = 0;
Weight[2].EventState[0] = WEIGHT_NO_INIT;
Weight[2].EventState[1] = WEIGHT_NO_INIT;
API_RecordRead( FileReg, MREG_WEIGHT3_OFFSET );
lvTemp.byte.MB = FileReg[0].idata[ 0 ];
lvTemp.byte.UB = FileReg[0].idata[ 1 ];
lvTemp.byte.HB = FileReg[0].idata[ 2 ];
lvTemp.byte.LB = FileReg[0].idata[ 3 ];
ubfTemp.UL = lvTemp.Val;
Weight[2].TempConst = ubfTemp.F;
API_RecordRead( FileReg, MREG_WEIGHT3_RANGE );
lvTemp.byte.MB = FileReg[0].idata[ 0 ];
lvTemp.byte.UB = FileReg[0].idata[ 1 ];
lvTemp.byte.HB = FileReg[0].idata[ 2 ];
lvTemp.byte.LB = FileReg[0].idata[ 3 ];
Weight[2].RangeMin[0] = lvTemp.Val;
lvTemp.byte.MB = FileReg[0].idata[ 4 ];
lvTemp.byte.UB = FileReg[0].idata[ 5 ];
lvTemp.byte.HB = FileReg[0].idata[ 6 ];
lvTemp.byte.LB = FileReg[0].idata[ 7 ];
Weight[2].RangeMax[0] = lvTemp.Val;
API_RecordRead( FileReg, MREG_WEIGHT3_RANGE2 );
lvTemp.byte.MB = FileReg[0].idata[ 0 ];
lvTemp.byte.UB = FileReg[0].idata[ 1 ];
lvTemp.byte.HB = FileReg[0].idata[ 2 ];
lvTemp.byte.LB = FileReg[0].idata[ 3 ];
Weight[2].RangeMin[1] = lvTemp.Val;
lvTemp.byte.MB = FileReg[0].idata[ 4 ];
lvTemp.byte.UB = FileReg[0].idata[ 5 ];
lvTemp.byte.HB = FileReg[0].idata[ 6 ];
lvTemp.byte.LB = FileReg[0].idata[ 7 ];
Weight[2].RangeMax[1] = lvTemp.Val;
API_RecordRead( FileReg, MREG_WEIGHT3_VALUE_CALIB );
lvTemp.byte.MB = FileReg[0].idata[ 0 ];
lvTemp.byte.UB = FileReg[0].idata[ 1 ];
lvTemp.byte.HB = FileReg[0].idata[ 2 ];
lvTemp.byte.LB = FileReg[0].idata[ 3 ];
ubfTemp.UL = lvTemp.Val;
Weight[2].Calib = ubfTemp.F;
lvTemp.byte.MB = FileReg[0].idata[ 4 ];
lvTemp.byte.UB = FileReg[0].idata[ 5 ];
lvTemp.byte.HB = FileReg[0].idata[ 6 ];
lvTemp.byte.LB = FileReg[0].idata[ 7 ];
Weight[2].CalibTemp = lvTemp.Val;
API_RecordRead( FileReg, MREG_WEIGHT3_FULL_CALIB );
lvTemp.byte.MB = FileReg[0].idata[ 0 ];
lvTemp.byte.UB = FileReg[0].idata[ 1 ];
lvTemp.byte.HB = FileReg[0].idata[ 2 ];
lvTemp.byte.LB = FileReg[0].idata[ 3 ];
#if !defined(OCWB_GW)
SPI_AD77xx_WriteFullScale(SPI_AD77xx_PORT_3, lvTemp.Val);
#else
Weight[2].CalibZero = lvTemp.Val;
#endif
API_RecordRead( FileReg, MREG_WEIGHT3_ZERO_CALIB );
lvTemp.byte.MB = FileReg[0].idata[ 0 ];
lvTemp.byte.UB = FileReg[0].idata[ 1 ];
lvTemp.byte.HB = FileReg[0].idata[ 2 ];
lvTemp.byte.LB = FileReg[0].idata[ 3 ];
#if !defined(OCWB_GW)
SPI_AD77xx_WriteOffset(SPI_AD77xx_PORT_3, lvTemp.Val);
#endif
API_RecordRead( FileReg, MREG_WEIGHT3_MAXIMUM );
lvTemp.byte.MB = FileReg[0].idata[ 0 ];
lvTemp.byte.UB = FileReg[0].idata[ 1 ];
lvTemp.byte.HB = FileReg[0].idata[ 2 ];
lvTemp.byte.LB = FileReg[0].idata[ 3 ];
Weight[2].Max = lvTemp.Val;
API_RecordRead( FileReg, MREG_WEIGHT3_TARE );
lvTemp.byte.MB = FileReg[0].idata[ 0 ];
lvTemp.byte.UB = FileReg[0].idata[ 1 ];
lvTemp.byte.HB = FileReg[0].idata[ 2 ];
lvTemp.byte.LB = FileReg[0].idata[ 3 ];
Weight[2].Tare = lvTemp.Val;
#endif
// SPI_AD77xx_SetMode(SPI_AD77xx_PORT_1, SINGLE_CONVERSION);
AppFlag.bits.tensometer_ok = FALSE;
WEIGHT_Flag = FALSE;
if(!WEIGHT_ReadWeight(SPI_AD77xx_PORT_1, &lvTemp.Val)) Weight[0].Value = -1000;
#if defined(WEIGHT2_ENABLE)
if(!WEIGHT_ReadWeight(SPI_AD77xx_PORT_2, &lvTemp.Val)) Weight[1].Value = -1000;
#endif
#if defined(WEIGHT3_ENABLE)
if(!WEIGHT_ReadWeight(SPI_AD77xx_PORT_3, &lvTemp.Val)) Weight[2].Value = -1000;
#endif
WEIGHT_Flag = TRUE;
OsSocket.TickTask[RTX_TENSOMETER] = TickGet();
}