99 lines
3.5 KiB
C
99 lines
3.5 KiB
C
#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
|
||
}
|
||
|