Files
CHJ/user/Compute/StaticTemperature.c
2026-03-20 21:19:04 +08:00

99 lines
3.5 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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)
// ͨ<><CDA8><EFBFBD>ߵ<EFBFBD><DFB5>±궨<C2B1><EAB6A8><EFBFBD><EFBFBD>RR<52><52><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
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
// ͨ<><CDA8>RRĬ<52>ϵ<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
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
}