NULL
This commit is contained in:
558
user/Main/MainCore.c
Executable file
558
user/Main/MainCore.c
Executable file
@@ -0,0 +1,558 @@
|
||||
#include "../main/SystemInclude.h"
|
||||
|
||||
u16 systmeState;
|
||||
//u16 UPGRADECammand ;
|
||||
//u16 CodeCRC ;
|
||||
u16 jumpError;
|
||||
//******************************************************************************
|
||||
// for internel modbus
|
||||
//u32 securityID; //
|
||||
|
||||
//*****************************************************************************
|
||||
//for modbus >16bit register define
|
||||
u32 flowRate,flowAccumulationInteger;
|
||||
s32 GASPressure;
|
||||
u64 flowAccumulationHex;
|
||||
u32 minFlowRate,maxFlowRate,minAnalogOutput,maxAnalogOutput;
|
||||
u32 alarmAcc,alarmUpperFlowRate,alarmLowerFlowRate;
|
||||
u32 reverseFlowRateMin, reverseFlowRateMax;
|
||||
|
||||
//*******************************************************************************
|
||||
__SystemProcess_Union_TypeDef systemProcessing; //<2F><><EFBFBD><EFBFBD>ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD>״̬
|
||||
__SystemState_Union_TypeDef currentMode;
|
||||
__Hardware_Status_Bit_TypeDef HWState;
|
||||
__Alarm_State_TypeDef systemAlarm;
|
||||
|
||||
//******************************************************************************
|
||||
u16 curveMode;
|
||||
u16 SysLcd, SysLoopChip;// currentSysState;
|
||||
u16 testTypeCounter;//, MEMSErrorCounter;
|
||||
u16 systemVoltage, batteryGrid;
|
||||
u16 calibType;
|
||||
// for code CRC
|
||||
u16 APPCodeCRC;
|
||||
u32 securityID;
|
||||
u16 IDvalidTime, comCounter, comResetCounter, AutoOffsetCounter, timePeriod, autoTxdCounter, SysVolErrorCount;
|
||||
u32 ModeExitTime;
|
||||
__Display_Status_Bit_TypeDef displayMode;
|
||||
// for save data
|
||||
u16 timeCompute;
|
||||
//for system
|
||||
u16 lastState, syatemHardState;
|
||||
//------------------------------------------------------------------------------
|
||||
// for display
|
||||
u8 Dis1[15], timer[8];
|
||||
u16 displayUpdate, displayCNT;
|
||||
//u8 flowRateUnit, AccUnit;
|
||||
//------------------------------------------------------------------------------
|
||||
// for flowRate
|
||||
u32 currentFlowRate, factoryFlowRate;
|
||||
//------------------------------------------------------------------------------
|
||||
//u16 calibTemperature;
|
||||
//------------------------------------------------------------------------------
|
||||
// for acc pulse output
|
||||
u16 samplingInterval, samplingIntervalTarget, responseTimeIndex;
|
||||
u16 updatePulseTime;
|
||||
//------------------------------------------------------------------------------
|
||||
u16 tmpIA;
|
||||
s32 tmpSLA, tmpSLB;
|
||||
u32 tmpLA, tmpLB;
|
||||
|
||||
TypeWord tempWord;
|
||||
TypeLong tempL;
|
||||
TypeLongLong tempDev;
|
||||
//------------------------------------------------------------------------------
|
||||
const u8 ProductModel[12] = PRODUCT_MOD;
|
||||
const u8 SoftVersion[12] = VERSION;
|
||||
const u8 SoftBuildDate[10] = BUILD_DATE;
|
||||
const u8 PulseOutGain[] ={32,16,8,4,2,1}; //
|
||||
const u8 FilterMax[] ={1, 2, 4, 8, 16, 32}; // filter depth
|
||||
const u16 Timing[] ={BASE_125MS, BASE_250MS, BASE_500MS, BASE_1000MS, BASE_2000MS, BASE_4000MS};
|
||||
const u16 TimeVaule[] ={2048,4096, 8192, 16384, 32768, 65535}; //2048, 0.125s<EFBFBD><EFBFBD>0.25s, 0.5s, 1s, 2s, 4s
|
||||
const u16 UpdateTimeVaule[] ={3000, 3850, 7372, 8192, 16384, 16384}; // 0.235s, 0.45s, 0.5s, 1s, 2s
|
||||
const u16 FRUnitForHour[] ={28800, 14400, 7200, 3600, 1800, 900};
|
||||
const u16 FRUnitForMinute[] ={480, 240, 120, 60, 30, 15};
|
||||
//------------------------------------------------------------------------------
|
||||
const u8 BuildDate[] = __DATE__; // "Oct 30 2010"
|
||||
/******************************************************************************/
|
||||
|
||||
//******************************************************************************
|
||||
void EnterUserMode(void)
|
||||
{
|
||||
currentMode.Bit.CalibMode = 0;
|
||||
currentMode.Bit.IntCalibMode = 0;
|
||||
currentMode.Bit.FactoryTestMode = 0;
|
||||
currentMode.Bit.DebugMode = 0;
|
||||
currentMode.Bit.DigitOutput = 1;
|
||||
currentMode.Bit.ComModeOperate = 0;
|
||||
ModeExitTime = 0;
|
||||
}
|
||||
|
||||
//******************************************************************************
|
||||
void EnterCalibMode(void)
|
||||
{
|
||||
currentMode.Bit.CalibMode = 1;
|
||||
currentMode.Bit.IntCalibMode = 1;
|
||||
currentMode.Bit.FactoryTestMode = 0;
|
||||
currentMode.Bit.DebugMode = 0;
|
||||
currentMode.Bit.DigitOutput = 1;
|
||||
currentMode.Bit.ComModeOperate = 1;
|
||||
ModeExitTime = 0;
|
||||
}
|
||||
|
||||
//******************************************************************************
|
||||
void EnterZeroCalibMode(void)
|
||||
{
|
||||
currentMode.Bit.CalibMode = 1;
|
||||
currentMode.Bit.IntCalibMode = 1;
|
||||
currentMode.Bit.ZeroCalib = 1;
|
||||
currentMode.Bit.FactoryTestMode = 0;
|
||||
currentMode.Bit.DebugMode = 0;
|
||||
currentMode.Bit.DigitOutput = 1;
|
||||
currentMode.Bit.ComModeOperate = 1;
|
||||
ModeExitTime = 0;
|
||||
}
|
||||
|
||||
//******************************************************************************
|
||||
void EnterBatteryMode(void)
|
||||
{
|
||||
currentMode.Bit.CalibMode = 0;
|
||||
currentMode.Bit.IntCalibMode = 0;
|
||||
currentMode.Bit.FactoryTestMode = 0;
|
||||
currentMode.Bit.DebugMode = 0;
|
||||
currentMode.Bit.DigitOutput = 1;
|
||||
currentMode.Bit.ComModeOperate = 1;
|
||||
currentMode.Bit.ExtPowerInput = 0;
|
||||
ModeExitTime = 0;
|
||||
}
|
||||
|
||||
//******************************************************************************
|
||||
void EnterDebugMode(void)
|
||||
{
|
||||
currentMode.Bit.CalibMode = 0;
|
||||
currentMode.Bit.IntCalibMode = 0;
|
||||
currentMode.Bit.FactoryTestMode = 0;
|
||||
currentMode.Bit.DebugMode = 1;
|
||||
currentMode.Bit.DigitOutput = 1;
|
||||
currentMode.Bit.ComModeOperate = 1;
|
||||
currentMode.Bit.ExtPowerInput = 1;
|
||||
ModeExitTime = 0;
|
||||
}
|
||||
|
||||
//******************************************************************************
|
||||
void EnterGcfTestMode(void)
|
||||
{
|
||||
currentMode.Bit.CalibMode = 0;
|
||||
currentMode.Bit.FactoryTestMode = 0;
|
||||
currentMode.Bit.DebugMode = 0;
|
||||
currentMode.Bit.ExtPowerInput = 1;
|
||||
currentMode.Bit.DigitOutput = 1;
|
||||
currentMode.Bit.ComModeOperate = 1;
|
||||
ModeExitTime = 0;
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
void ModeExitCount(void)
|
||||
{
|
||||
//----------------------------------------------------------------------------
|
||||
// ONE SENCOND
|
||||
// 16384*30 / 128
|
||||
IDvalidTime += timePeriod;
|
||||
if(IDvalidTime >= ID_VALID_TIME) {
|
||||
IDvalidTime = 0;
|
||||
securityID = 0;
|
||||
HWState.EnableCheckCorr = 1;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// comm return counter
|
||||
if(currentMode.Bit.CalibMode) {
|
||||
comCounter += timePeriod;
|
||||
if(comCounter >= comResetCounter) {
|
||||
comCounter = 0;
|
||||
comResetCounter = TIMING_500mS;
|
||||
currentMode.Bit.DigitOutput = 1;
|
||||
systemProcessing.Bit.WriteHandle = 0;
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// mode return counter
|
||||
ModeExitTime += (u32)timePeriod;
|
||||
if(ModeExitTime >= (u32)EXIT_7200S) {
|
||||
ModeExitTime = 0;
|
||||
EnterUserMode();
|
||||
// currentMode.Bit.ComModeOperate = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
void ManagePrimaryTimeInterval(void)
|
||||
{
|
||||
u32 currentPerPulse;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
samplingIntervalForTotal = samplingInterval;
|
||||
timePeriod = TimeVaule[samplingInterval];
|
||||
timePeriod >>= 7;
|
||||
|
||||
samplingInterval = samplingIntervalTarget;
|
||||
ResetPrimaryTimer(TimeVaule[samplingInterval]);
|
||||
|
||||
samplingIntervalTarget = factoryInterval;//
|
||||
|
||||
if(currentMode.Bit.CalibMode) samplingIntervalTarget = (u16)EXT_POWER_PERIOD_TIME;
|
||||
else samplingIntervalTarget = factoryInterval;//
|
||||
currentMode.Bit.TurnOffSystem = 0;
|
||||
}
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>------------------------------------------------------------
|
||||
void EnterMainEntry(void)
|
||||
{
|
||||
// samplingInterval = 1;
|
||||
|
||||
// ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>жϴ<D0B6><CFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
StartPrimaryTimer(TimeVaule[samplingInterval]); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
lptimer_register_irq_callback(PrimaryTimer, PrimaryTimer_IRQ_Callback);
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
void BackupParameterToFlash(void)
|
||||
{
|
||||
//FY WriteShortParameterToBuffer(UPGRADECammand, UPGRADE_APP, UPGRADE_APP_WIDTH);
|
||||
//FY WriteShortParameterToBuffer(localAddress, SLAVER_ADDR, SLAVER_ADDR_WIDTH);
|
||||
//WriteShortParameterToBuffer(baudRate, BAUD_RATE, BAUD_RATE_WIDTH);
|
||||
// Clear_WDT();
|
||||
//
|
||||
// disable_interrupts();
|
||||
////FY WriteMultiByteToInfoSegment(PARAMETER_BASE, FlashBuf, PARA_LEN);
|
||||
// enable_interrupts();
|
||||
|
||||
//FY ReadMultiByteFromInfoSegment(PARAMETER_BASE, FlashBuf, PARA_LEN);
|
||||
}
|
||||
|
||||
//******************************************************************************
|
||||
//ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
void SystemParameterInit(void)
|
||||
{
|
||||
currentMode.Bit.ComModeOperate = 0;
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
InternalShortParameterInit();
|
||||
InternalLongParameterInit();
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// <20>ȶ<EFBFBD>ȡ<EFBFBD>¶ȣ<C2B6><C8A3>ж<EFBFBD>ģʽ
|
||||
ManagePrimaryTimeInterval();
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
Clear_WDT();
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
ReadMultiByteFromMemory(SERIES_BASE, (u8 *)&meterSN1, SERIES_DEPTH);
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
localAddress = (u16)ReadShortParameterFromMemory(SLAVER_ADDR, SLAVER_ADDR_DEFAULT);
|
||||
#ifndef ENABLE_USER_I2C
|
||||
#pragma message("[undefined] ENABLE_USER_I2C")
|
||||
#elif(ENABLE_USER_I2C)
|
||||
I2CAddr = localAddress;
|
||||
#endif
|
||||
|
||||
// for GDCF
|
||||
// GCFCoefA = (s32)ReadParameterFromEEPROM(GCF_A, GCF_A_WIDTH, (u32)GCF_A_DEFAULT);
|
||||
GDCFactor = (u16)ReadShortParameterFromMemory(GCF_B, GCF_DEFAULT);
|
||||
// GCFCoefC = (s32)ReadParameterFromEEPROM(GCF_C, GCF_C_WIDTH, GCF_C_DEFAULT);
|
||||
ComputeGCFFactor();
|
||||
|
||||
Clear_WDT();
|
||||
offsetGas = (u16)ReadShortParameterFromMemory(GAS_OFFSET, 32768);
|
||||
//------------------------------------------------------------------------------
|
||||
// offsetGCFX = (u16)ReadParameterFromEEPROM(OFFSET_GCFX, OFFSET_GCFX_WIDTH, 32768);
|
||||
//------------------------------------------------------------------------------
|
||||
samplingInterval = factoryInterval;
|
||||
samplingTiming = SetupResponseTime(factoryInterval, SAMPLE_PERIOD_DEFAULT);
|
||||
|
||||
responseTimeIndex = (u16)ReadShortParameterFromMemory(RESPONSE_TIME, RESPONSE_TIME_DEFAULT);
|
||||
responseTime = SetupResponseTime(responseTimeIndex, RESPONSE_TIME_DEFAULT);
|
||||
|
||||
// for max current Loop flowrate
|
||||
maxFlowRate = ReadLongParameterFromMemory(OUT_MAX_FLOW, MAX_FR_DEFAULT);
|
||||
tempL.DWord = maxFlowRate;
|
||||
maxFlowRateH = tempL.Word[1];
|
||||
maxFlowRateL = tempL.Word[0];
|
||||
|
||||
minFlowRate = ReadLongParameterFromMemory(OUT_MIN_FLOW, MIN_FR_DEFAULT); // V2004
|
||||
tempL.DWord = minFlowRate;
|
||||
minFlowRateH = tempL.Word[1];
|
||||
minFlowRateL = tempL.Word[0];
|
||||
|
||||
Clear_WDT();
|
||||
//read uart DecimalPoint
|
||||
uartDecimalPoint = (u16)ReadShortParameterFromMemory(COM_DECIMAL, COM_DECIMAL_POINT_DEFAULT);
|
||||
//============================================================================
|
||||
// for AUTO TXD DATA
|
||||
timingTxdStart = (u16)ReadShortParameterFromMemory(TIMING_TXD_START, TIMING_TXD_START_DEFAULT);
|
||||
timingTxdLen = (u16)ReadShortParameterFromMemory(TIMING_TXD_LEN, TIMING_TXD_LEN_DEFAULT);
|
||||
timingTxdTime = (u16)ReadShortParameterFromMemory(TIMING_TXD_TIME, TIMING_TXD_TIME_DEFAULT);
|
||||
|
||||
// key setup password
|
||||
//============================================================================
|
||||
#ifndef ENABLE_KEY_FUNCTION
|
||||
#pragma message("[undefined] ENABLE_KEY_FUNCTION")
|
||||
#elif(ENABLE_KEY_FUNCTION)
|
||||
keyPassWord = ReadParameterFromEEPROM(KEY_PASSWORD, KEY_PASSWORD_WIDTH, KEY_PASSWORD_DEFAULT);
|
||||
#endif
|
||||
|
||||
//============================================================================
|
||||
UnitConverterInit();
|
||||
|
||||
//============================================================================
|
||||
#ifndef ENABLE_ACCPULSE
|
||||
#pragma message("[undefined] ENABLE_ACCPULSE")
|
||||
#elif(ENABLE_ACCPULSE)
|
||||
PulseParameterInit();
|
||||
#endif
|
||||
|
||||
//============================================================================
|
||||
GasAnalysisParameterInit();
|
||||
|
||||
//============================================================================
|
||||
SaveParameterInit();
|
||||
|
||||
//==============================================================================
|
||||
// retrieve device coefficients
|
||||
#ifndef ENABLE_DCOEF
|
||||
#pragma message("[undefined] ENABLE_DCOEF")
|
||||
#elif(ENABLE_DCOEF)
|
||||
RetriveDevCoef();
|
||||
#endif
|
||||
|
||||
//============================================================================
|
||||
// for Tempreature correct
|
||||
RetriveTACurve();
|
||||
|
||||
//==============================================================================
|
||||
#ifndef REC_ACC_PER
|
||||
#pragma message("[undefined] REC_ACC_PER")
|
||||
#elif(REC_ACC_PER)
|
||||
RetrieveLastAccumulation();
|
||||
#endif
|
||||
|
||||
SetHistoryRecordTime();
|
||||
|
||||
// for modbus
|
||||
InitUseBusParameter();
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// V2004
|
||||
#ifndef ENABLE_ALARM_ACC
|
||||
#pragma message("[undefined] ENABLE_ALARM_ACC")
|
||||
#elif(ENABLE_ALARM_ACC)
|
||||
alarmAcc = ReadParameterFromEEPROM(ALARM_ACC, ALARM_ACC_WIDTH, ALARM_ACC_DEFAULT);
|
||||
#endif
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
#ifndef ENABLE_LEAK_DETECT
|
||||
#pragma message("[undefined] ENABLE_LEAK_DETECT")
|
||||
#elif(ENABLE_LEAK_DETECT)
|
||||
minLeakFlowRate = (u16)ReadParameterFromEEPROM(MIN_LEAK_FLOW, MIN_LEAK_FLOW_WIDTH, MIN_LEAK_FLOW_DEFAULT);
|
||||
maxLeakFlowRate = (u16)ReadParameterFromEEPROM(MAX_LEAK_FLOW, MAX_LEAK_FLOW_WIDTH, MAX_LEAK_FLOW_DEFAULT);
|
||||
leakDetectTime = (u16)ReadParameterFromEEPROM(LEAK_TIME, LEAK_TIME_WIDTH, LEAK_TIME_DEFAULT);
|
||||
#endif
|
||||
|
||||
//==============================================================================
|
||||
#ifndef REC_ACC_PER
|
||||
#pragma message("[undefined] REC_ACC_PER")
|
||||
#elif(REC_ACC_PER)
|
||||
RetrieveLastAccumulation();
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
//******************************************************************************
|
||||
// Auto-check
|
||||
void SystemHardWareAutoCheck(void)
|
||||
{
|
||||
u8 rand;
|
||||
|
||||
systemAlarm.Word = 0;
|
||||
|
||||
for(rand = 0; rand < 6; rand++) Dis1[rand] = 0;
|
||||
|
||||
// 1) check CRYSTAL
|
||||
// if(AutoCheckCrystal())
|
||||
// {
|
||||
// Dis1[CHK_CRYSTAL] = 1;
|
||||
// systemAlarm.Bit.CrystalAlarm = 1;
|
||||
// }
|
||||
|
||||
// 2) Check calib memory
|
||||
rand = ReadByteFromEEPROM(0, PARA_EEPROM);
|
||||
rand++;
|
||||
WriteByteToEEPROM(0, rand, PARA_EEPROM);
|
||||
if(rand != ReadByteFromEEPROM(0, PARA_EEPROM))
|
||||
{
|
||||
systemAlarm.Bit.EEPROMAlarm = 1;
|
||||
Dis1[CHK_PARA] = 1;
|
||||
}
|
||||
|
||||
// 3) Check data memory
|
||||
rand = ReadByteFromEEPROM(0, DATA_EEPROM);
|
||||
rand++;
|
||||
WriteByteToEEPROM(0, rand, DATA_EEPROM);
|
||||
if(rand != ReadByteFromEEPROM(0, DATA_EEPROM))
|
||||
{
|
||||
systemAlarm.Bit.EEPROMAlarm = 1;
|
||||
Dis1[CHK_DATA] = 1;
|
||||
}
|
||||
|
||||
// // 4) Check acc memory
|
||||
// rand = ReadByteFromFRAM(0);
|
||||
// rand++;
|
||||
// WriteByteToFRAM(0, rand);
|
||||
// if(rand != ReadByteFromFRAM(0))
|
||||
// {
|
||||
// systemAlarm.Bit.EEPROMAlarm = 1;
|
||||
// Dis1[CHK_ACC] = 1;
|
||||
// }
|
||||
|
||||
// 7) Check external RTC and read current time
|
||||
//FY SetRTCCurrentTime(); // set time to MCU RTC
|
||||
|
||||
// 7)Check external temprature
|
||||
#ifndef ENABLE_USE_MCP9808
|
||||
#pragma message("[undefined] ENABLE_USE_MCP9808")
|
||||
#elif(ENABLE_USE_MCP9808)
|
||||
if(ReadWordRegister(MID) != 0x0054)
|
||||
{
|
||||
systemAlarm.Bit.TempAlarm = 1;
|
||||
Dis1[CHK_TEMP] = 1;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
//******************************************************************************
|
||||
void SystemHardWareInit(void)
|
||||
{
|
||||
/*SPI Bus Init=========================================================================*/
|
||||
//TurnOffAnalogCircuit();
|
||||
/*IIC Bus Init=========================================================================*/
|
||||
// SI2C_Init();
|
||||
|
||||
/*Memory Init==========================================================================*/
|
||||
EEPROMInit();
|
||||
|
||||
//if(REC_ACC_PER) FRAMInit();// Acc flowrate save enable bit
|
||||
/*external tempreture Init============================================================*/
|
||||
// HWState.EnableTempTest= 1;
|
||||
// HWState.EnableTempInit=1;
|
||||
// WriteWordRegister(CONFIG, SHUT_DOWN);//<2F><><EFBFBD>üĴ<C3BC><C4B4><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
|
||||
}
|
||||
|
||||
//******************************************************************************
|
||||
void SystemInterfaceInit(void)
|
||||
{
|
||||
//uart init============================================================================
|
||||
#ifndef ENABLE_USER_UART
|
||||
#pragma message("[undefined] ENABLE_USER_UART")
|
||||
#elif(ENABLE_USER_UART)
|
||||
MainUartInit(baudRateVaule[baudRate]);
|
||||
StartDMAForRxdMainUartData();
|
||||
#endif
|
||||
|
||||
//iic init============================================================================
|
||||
#ifndef ENABLE_USER_I2C
|
||||
#pragma message("[undefined] ENABLE_USER_I2C")
|
||||
#elif(ENABLE_USER_I2C)
|
||||
I2C_Slave_Init(100000 , 0x02);
|
||||
I2CAddr = localAddress;
|
||||
#endif
|
||||
}
|
||||
|
||||
//******************************************************************************
|
||||
void InitGlobalVar(void)
|
||||
{
|
||||
u8 I;
|
||||
|
||||
jumpError = 0;
|
||||
|
||||
Clear_WDT();
|
||||
//TXDMode = ENABLE_TXD_USE_DMA;
|
||||
|
||||
displayUpdate = 0;
|
||||
flowRate = 0;
|
||||
for(I=0; I<12; I++) Dis1[I] = 0;
|
||||
for(I=0; I<ANX; I++) voltageDetected[I] = 0;
|
||||
|
||||
HWState.SampledOver = 0;
|
||||
HWState.EnableCheck = 1;
|
||||
currentMode.Bit.TurnOffSystem = 0;
|
||||
|
||||
//==============================================================================
|
||||
// softVersion = (u16)SOFT_VERSION;
|
||||
softVersion = (u16)VER_MV;
|
||||
softVersion <<= 4;
|
||||
softVersion |= (u16)VER_SV;
|
||||
softVersion <<= 4;
|
||||
softVersion |= (u16)VER_RV;
|
||||
softVersion <<= 4;
|
||||
softVersion |= (u16)VER_BV;
|
||||
//=============================================================================
|
||||
|
||||
// 0x80~0xf0
|
||||
protocol = 0;
|
||||
localAddress = 1;
|
||||
baudRate = BPS_38400; // BPS_9600 BPS_115200
|
||||
minAnalogOutput = 0;
|
||||
maxAnalogOutput = 0;
|
||||
GDCFactorAType = 0;
|
||||
filterTime = 0;
|
||||
offsetGas = 0;
|
||||
offsetGasA = 0;
|
||||
flowUnit = 0;
|
||||
alarmFunction = 0;
|
||||
alarmOutDelay = 0;
|
||||
alarmAcc = 0;
|
||||
alarmUpperFlowRate = 0;
|
||||
alarmLowerFlowRate = 0;
|
||||
|
||||
PulseLevel = 0;
|
||||
//==============================================================================
|
||||
// 0XF0~0XFF: write only (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
CMDComPassword = 0;
|
||||
CMDCalOffset = 0;
|
||||
CMDClrRecord = 0;
|
||||
|
||||
//==============================================================================
|
||||
flowAccCumulationRemaining = 0;
|
||||
flowAccumulationHex = 0;
|
||||
//---------------------------------------------------------------------------
|
||||
totalPulse = 0;
|
||||
|
||||
#ifndef ENABLE_DENSITY_DETECT
|
||||
#pragma message("[undefined] ENABLE_DENSITY_DETECT")
|
||||
#elif(ENABLE_DENSITY_DETECT)
|
||||
density = 0;
|
||||
densityFSParameter = 0;
|
||||
#endif
|
||||
|
||||
displayMode.NeedForInit = 1;
|
||||
}
|
||||
|
||||
/*******************************************************************************/
|
||||
void SystemInitProcess(void)
|
||||
{
|
||||
InitGlobalVar(); //ȫ<>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
|
||||
SystemHardWareInit(); //ϵͳӲ<CDB3><D3B2><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
|
||||
SystemHardWareAutoCheck(); //
|
||||
SystemParameterInit(); //ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
|
||||
SystemInterfaceInit(); //ϵͳ<CFB5>ӿڳ<D3BF>ʼ<EFBFBD><CABC> //USER_UART
|
||||
systmeState = 0xAA55;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user