Files
CHJ/user/Core/D9V2VHH_DP1703V10.c

250 lines
9.8 KiB
C
Raw Permalink Normal View History

2026-03-20 21:16:58 +08:00
#include "../main/SystemInclude.h"
//##############################################################################
#if(1)
//##############################################################################
float RhExtGain;
u32 compareBaseCounter;
u16 compareBaseValue;
u16 RhExtGainRes;
u16 DIVHHigh, DIVHRoom, DIVHLow;
u16 VDUGXHigh, VDUGXRoom, VDUGXLow;
u16 DIVHHigh, DIVHRoom, DIVHLow;
u16 VDUGXHigh, VDUGXRoom, VDUGXLow;
u16 offsetAir, offsetAirGainx, offsetGasGainx;
u16 NRHHigh, NRHRoom, NRHLow,VHHHigh, VHHRoom, VHHLow;
u16 P0RhLow, P0RhHigh;
/******************************************************************************/
void RHCircuitParameterInit(void)
{
// A type external gain res
RhExtGainRes = (u16)ReadParameterFromEEPROM(RH_GAINRES, RH_GAINRES_WIDTH, RH_GAINRES_DEFAULT);
RhExtGain = 1.0/(float)RhExtGainRes;
DIVHHigh = (u16)ReadParameterFromEEPROM(DIVHX_HIGH, DIVHX_HIGH_WIDTH, DIVHX_HIGH_DEFAULT);
DIVHRoom = (u16)ReadParameterFromEEPROM(DIVHX_ROOM, DIVHX_ROOM_WIDTH, DIVHX_ROOM_DEFAULT);
DIVHLow = (u16)ReadParameterFromEEPROM(DIVHX_LOW, DIVHX_LOW_WIDTH, DIVHX_LOW_DEFAULT);
VDUGXHigh = (u16)ReadParameterFromEEPROM(VDUGX_HIGH, VDUGX_HIGH_WIDTH, VDUGX_HIGH_DEFAULT);
VDUGXRoom = (u16)ReadParameterFromEEPROM(VDUGX_ROOM, VDUGX_ROOM_WIDTH, VDUGX_ROOM_DEFAULT);
VDUGXLow = (u16)ReadParameterFromEEPROM(VDUGX_LOW, VDUGX_LOW_WIDTH, VDUGX_LOW_DEFAULT);
offsetAirGainx = (u16)ReadParameterFromEEPROM(OFFSET_AIR_VDUGX, OFFSET_AIR_VDUGX_WIDTH, VDUGX_ROOM_DEFAULT);
offsetGasGainx = (u16)ReadParameterFromEEPROM(OFFSET_GAS_VDUGX, OFFSET_GAS_VDUGX_WIDTH, VDUGX_ROOM_DEFAULT);
VHHHigh = (u16)ReadParameterFromEEPROM(VHH_HIGH, VHH_HIGH_WIDTH, RH_PARA_DEFAULT);
VHHRoom = (u16)ReadParameterFromEEPROM(VHH_ROOM, VHH_ROOM_WIDTH, RH_PARA_DEFAULT);
VHHLow = (u16)ReadParameterFromEEPROM(VHH_LOW, VHH_LOW_WIDTH, RH_PARA_DEFAULT);
NRHHigh = (u16)ReadParameterFromEEPROM(NRH_HIGH, NRH_HIGH_WIDTH, RH_PARA_DEFAULT);
NRHRoom = (u16)ReadParameterFromEEPROM(NRH_ROOM, NRH_ROOM_WIDTH, RH_PARA_DEFAULT);
NRHLow = (u16)ReadParameterFromEEPROM(NRH_LOW, NRH_LOW_WIDTH, RH_PARA_DEFAULT);
VHHParameterAir = (u16)ReadParameterFromEEPROM(VHH_AIR_PARA, VHH_AIR_PARA_WIDTH, RH_PARA_DEFAULT);
VHHParameterScale = (u16)ReadParameterFromEEPROM(VHH_PARA_SCALE, VHH_PARA_SCALE_WIDTH, 1000);
P0RhLow = (u16)ReadParameterFromEEPROM(P0_0_RH, P0_0_RH_WIDTH, RH_PARA_DEFAULT);
P0RhHigh = (u16)ReadParameterFromEEPROM(P0_50_RH, P0_50_RH_WIDTH, RH_PARA_DEFAULT);
RHLowTa = (u16)ReadParameterFromEEPROM(RH_0, RH_0_WIDTH, RH_0_DEFAULT);
RHHighTa = (u16)ReadParameterFromEEPROM(RH_50, RH_50_WIDTH, RH_50_DEFAULT);
// for ADC Gain
#ifndef ENABLE_ADJUST_ADC_GAIN
#pragma message("[undefined] ENABLE_ADJUST_ADC_GAIN")
#elif(ENABLE_ADJUST_ADC_GAIN)
adcGain = (u16)ReadParameterFromEEPROM(SD24_GAIN, SD24_GAIN_WIDTH, ADC_GAIN_DEFAULT); // V2004
#endif
}
/******************************************************************************/
void CalibrateOffset(void) //atype?
{
// tempL.Word[0] = voltageDetected[NIDX];
// offsetAir = WriteShortParameterToEEPROM(OFFSET_AIR, OFFSET_AIR_WIDTH);
// //tempL.Word[0] += 30;
// offsetGas = WriteShortParameterToEEPROM(OFFSET_GAS, OFFSET_GAS_WIDTH);
// tempL.Word[0] = voltageDetected[VDUGX];
// offsetAirGainx = WriteShortParameterToEEPROM(OFFSET_AIR_VDUGX, OFFSET_AIR_VDUGX_WIDTH);
// offsetGasGainx = WriteShortParameterToEEPROM(OFFSET_GAS_VDUGX, OFFSET_GAS_VDUGX_WIDTH);
}
void CalibrateGasOffset(void)
{
// tempL.Word[0] = voltageDetected[NIDX];
// offsetAir = WriteShortParameterToEEPROM(OFFSET_AIR, OFFSET_AIR_WIDTH);
// //tempL.Word[0] += 30;
// offsetGas = WriteShortParameterToEEPROM(OFFSET_GAS, OFFSET_GAS_WIDTH);
// tempL.Word[0] = voltageDetected[VDUGX];
// offsetGasGainx = WriteShortParameterToEEPROM(OFFSET_GAS_VDUGX, OFFSET_GAS_VDUGX_WIDTH);
}
/******************************************************************************/
void PreCalibrationParameterWriting(void)
{
// //===========================================================================
// tempL.Word[0] = voltageDetected[NIDX];
// offsetAir = WriteShortParameterToEEPROM(OFFSET_AIR, OFFSET_AIR_WIDTH);
// //tempL.Word[0] += 30;
// offsetGas = WriteShortParameterToEEPROM(OFFSET_GAS, OFFSET_GAS_WIDTH);
//
// //---------------------------------------------------------------------------
// tempL.Word[0] = voltageDetected[RRRES];
// NRHRoom = WriteShortParameterToEEPROM(NRH_ROOM, NRH_ROOM_WIDTH);
//
// tempL.Word[0] = voltageDetected[IVHDX];
// VHHRoom = WriteShortParameterToEEPROM(VHH_ROOM, VHH_ROOM_WIDTH);
//
// tempL.Word[0] = voltageDetected[DIVHX];
// DIVHRoom = WriteShortParameterToEEPROM(DIVHX_ROOM, DIVHX_ROOM_WIDTH);
// tempL.Word[0] = voltageDetected[VDUGX];
// offsetAirGainx = WriteShortParameterToEEPROM(OFFSET_AIR_VDUGX, OFFSET_AIR_VDUGX_WIDTH);
// offsetGasGainx = WriteShortParameterToEEPROM(OFFSET_GAS_VDUGX, OFFSET_GAS_VDUGX_WIDTH);
// VDUGXRoom = WriteShortParameterToEEPROM(VDUGX_ROOM, VDUGX_ROOM_WIDTH);
// //---------------------------------------------------------------------------
//#ifndef TEMP_CORR_USE_TA
//#pragma message("[undefined] TEMP_CORR_USE_TA")
//#elif(TEMP_CORR_USE_TA)
// tempL.Word[0] = voltageDetected[TPCB];
//#else
// #ifndef ENABLE_GAS_RECOGNITION
// #pragma message("[undefined] ENABLE_GAS_RECOGNITION")
// #elif(ENABLE_GAS_RECOGNITION)
// tempL.Word[0] = voltageDetected[TGAS];
// #else
// tempL.Word[0] = voltageDetected[TPCB];
// #endif
//#endif
// //---------------------------------------------------------------------------
// calibTemperature = WriteShortParameterToEEPROM(CALIB_TEMPERATURE, CALIB_TEMPERATURE_WIDTH);
// //---------------------------------------------------------------------------
// //===========================================================================
//#ifndef ENABLE_A_TYPE_FLOWRATE
//#pragma message("[undefined] ENABLE_A_TYPE_FLOWRATE")
//#elif(ENABLE_A_TYPE_FLOWRATE)
// tempL.Word[0] = voltageDetected[SDT];
// offsetGasA = WriteShortParameterToEEPROM(OFFSET_A, OFFSET_A_WIDTH);
//#endif
//
// calibType = ('P'<<8)+'D'; //5044
}
/******************************************************************************/
void LowTemperatureParameterWriting(void)
{
if(voltageDetected[TPCB] >= ENABLE_WRITE_TA_LOW)
{
calibType = ('E'<<8)+'R';
return;
}
tempL.Word[0] = voltageDetected[RRRES];
NRHLow = WriteShortParameterToEEPROM(NRH_LOW, NRH_LOW_WIDTH);
tempL.Word[0] = voltageDetected[IVHDX];
VHHLow = WriteShortParameterToEEPROM(VHH_LOW, VHH_LOW_WIDTH);
tempL.Word[0] = voltageDetected[DIVHX];
DIVHLow = WriteShortParameterToEEPROM(DIVHX_LOW, DIVHX_LOW_WIDTH);
tempL.Word[0] = voltageDetected[VDUGX];
VDUGXLow = WriteShortParameterToEEPROM(VDUGX_LOW, VDUGX_LOW_WIDTH);
// for AType FlowRate Compute
//tempL.Word[0] = ReadDataFromMovingAverage(PDRH);
//---------------------------------------------------------------------------
tempL.Word[0] = voltageDetected[PORH];
P0RhLow = WriteShortParameterToEEPROM(P0_0_RH, P0_0_RH_WIDTH);
tempL.Word[0] = voltageDetected[RHRES];
RHLowTa = WriteShortParameterToEEPROM(RH_0, RH_0_WIDTH);
tempL.Word[0] = voltageDetected[NIDX];
OffsetLow = WriteShortParameterToEEPROM(OFFSET_00, OFFSET_00_WIDTH);
StaticLowTemperatureWrite();
//calibType = ('L'<<8)+'D';
calibType &= 0xff00;
calibType |= 'L';
}
/******************************************************************************/
void HighTemperatureParameterWriting(void)
{
if(voltageDetected[TPCB] <= ENABLE_WRITE_TA_HIGH)
{
calibType = ('E'<<8)+'R';
return;
}
tempL.Word[0] = voltageDetected[RRRES];
NRHHigh = WriteShortParameterToEEPROM(NRH_HIGH, NRH_HIGH_WIDTH);
tempL.Word[0] = voltageDetected[IVHDX];
VHHHigh = WriteShortParameterToEEPROM(VHH_HIGH, VHH_HIGH_WIDTH);
tempL.Word[0] = voltageDetected[DIVHX];
DIVHHigh = WriteShortParameterToEEPROM(DIVHX_HIGH, DIVHX_HIGH_WIDTH);
tempL.Word[0] = voltageDetected[VDUGX];
VDUGXHigh = WriteShortParameterToEEPROM(VDUGX_HIGH, VDUGX_HIGH_WIDTH);
// for AType FlowRate Compute
tempL.Word[0] = voltageDetected[PORH];
P0RhHigh = WriteShortParameterToEEPROM(P0_50_RH, P0_50_RH_WIDTH);
tempL.Word[0] = voltageDetected[RHRES];
RHHighTa = WriteShortParameterToEEPROM(RH_50, RH_50_WIDTH);
tempL.Word[0] = voltageDetected[NIDX];
OffsetHigh = WriteShortParameterToEEPROM(OFFSET_50, OFFSET_50_WIDTH);
StaticLowTemperatureWrite();
calibType &= 0x00ff;
calibType |= ('H'<<8);
}
/******************************************************************************/
void SaveVHHAndNRHInTempretureMode(void)
{
if(!currentMode.Bit.ZeroCalib) return;
if(samplingInterval > EXT_POWER_PERIOD_TIME) return;
if((voltageDetected[TPCB] > ENABLE_WRITE_TA_LOW) && (voltageDetected[TPCB] < ENABLE_WRITE_TA_HIGH))
{
compareBaseCounter = 0;
compareBaseValue = voltageDetected[TPCB];
return;
}
if((voltageDetected[TPCB] > compareBaseValue + ENABLE_WRITE_TA_SCALE) || (voltageDetected[TPCB] < compareBaseValue - ENABLE_WRITE_TA_SCALE))
{
compareBaseCounter = 0;
compareBaseValue = voltageDetected[TPCB];
}
else
{
//compareBaseCounter += (unsigned long int)timePeriod;
if(compareBaseCounter < (unsigned long int)EXIT_5400S) return; // 1hours // 1hours
if(voltageDetected[TPCB] >= ENABLE_WRITE_TA_HIGH) HighTemperatureParameterWriting();
else if(voltageDetected[TPCB] <= ENABLE_WRITE_TA_LOW) LowTemperatureParameterWriting();
compareBaseCounter=0;
}
}
//##############################################################################
#endif
//##############################################################################