#include "../main/SystemInclude.h" // for flowrate compute u16 staticHighTemperature, staticLowTemperature, RHHighTa, RHLowTa; s32 RHCalibDeltaVaule, TACalibDeltaVaule, RHTemperature; static u16 zeroCalibType; //****************************************************************************** void StaticTemperatureInit(void) { zeroCalibType = 0; staticLowTemperature = (u16)ReadParameterFromMemory(STATIC_LOW_TA, STATIC_LOW_TA_WIDTH, STATIC_LOW_TA_DEFAULT); if((isReadParameterOK) && (staticLowTemperature < ENABLE_WRITE_TA_LOW)) zeroCalibType |= 'L'; staticHighTemperature = (u16)ReadParameterFromMemory(STATIC_HIGH_TA, STATIC_HIGH_TA_WIDTH, STATIC_HIGH_TA_DEFAULT); if((isReadParameterOK) && (staticHighTemperature > ENABLE_WRITE_TA_HIGH)) zeroCalibType |= 'H'<<8; } //****************************************************************************** void StaticLowTemperatureWrite(void) { tempL.Word[0] = voltageDetected[TPCB]; staticLowTemperature = WriteShortParameterToEEPROM(STATIC_LOW_TA, STATIC_LOW_TA_WIDTH); zeroCalibType &= 0xff00; zeroCalibType |= 'L'; currentMode.Bit.LowCalibEnd = 1; if(zeroCalibType == (('H'<<8)+'L')) { tempL.Word[0] = 0; tempL.Word[0] = WriteShortParameterToEEPROM(SYS_COMMAND, SYS_COMMAND_WIDTH); EnterUserMode(); } } //****************************************************************************** void StaticHighTemperatureWrite(void) { tempL.Word[0] = voltageDetected[TPCB]; staticHighTemperature = WriteShortParameterToEEPROM(STATIC_HIGH_TA, STATIC_HIGH_TA_WIDTH); zeroCalibType &= 0x00ff; zeroCalibType |= 'H'<<8; currentMode.Bit.HighCalibEnd = 1; if(zeroCalibType == (('H'<<8)+'L')) { tempL.Word[0] = 0; tempL.Word[0] = WriteShortParameterToEEPROM(SYS_COMMAND, SYS_COMMAND_WIDTH); EnterUserMode(); } } //****************************************************************************** u16 ComputeRHTemperature(u16 RHRes) { s32 computeBuf; RHCalibDeltaVaule = (u32)RHHighTa-(u32)RHLowTa; TACalibDeltaVaule = (u32)staticHighTemperature-(u32)staticLowTemperature; computeBuf = (u32)RHRes-(u32)RHLowTa; computeBuf *= TACalibDeltaVaule; computeBuf /= RHCalibDeltaVaule; computeBuf += (u32)staticLowTemperature; return (u16)computeBuf; } //****************************************************************************** void StaticTGasCompute(void) { voltageDetected[TRH] = ComputeRHTemperature(voltageDetected[RRRES]); //============================================================================== #ifndef ENABLE_RR_CALIBRATION #pragma message("[undefined] ENABLE_RR_CALIBRATION") #elif(ENABLE_RR_CALIBRATION) // 通过高低温标定过的RR计算介质温度 RHCalibDeltaVaule = (u32)NRHHigh-(u32)NRHLow; TACalibDeltaVaule = (u32)staticHighTemperature-(u32)staticLowTemperature; tmpSLA = (u32)voltageDetected[RRRES]-(u32)NRHLow; tmpSLA *= TACalibDeltaVaule; tmpSLA /= RHCalibDeltaVaule; tmpSLA += (u32)staticLowTemperature; voltageDetected[TGAS] = (u16)tmpSLA; #else // 通过RR默认的系数计算介质温度 voltageDetected[TGAS] = voltageDetected[TPCB]; #endif //============================================================================== #ifndef ENABLE_PRESSURE_TEMPERATURE #pragma message("[undefined] ENABLE_PRESSURE_TEMPERATURE") #elif(!ENABLE_PRESSURE_TEMPERATURE) GasTemperature = (u16)voltageDetected[TGAS]; GasTemperature -= (u16)TEMPRETURE_OFFSET; #endif }