250 lines
9.8 KiB
C
250 lines
9.8 KiB
C
|
|
#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
|
||
|
|
//##############################################################################
|