NULL
This commit is contained in:
54
user/Interface/AlarmOutputDefine.h
Executable file
54
user/Interface/AlarmOutputDefine.h
Executable file
@@ -0,0 +1,54 @@
|
||||
#ifndef __AlarmOutputDefine_h__
|
||||
#define __AlarmOutputDefine_h__
|
||||
|
||||
//==============================================================================
|
||||
// for alarm function
|
||||
#define EN_ACC_ALARM BIT0
|
||||
#define EN_FR_ALARM BIT1
|
||||
#define EN_SUPPERSSSION BIT2 // 1: <20><>Ч1
|
||||
#define EN_PRESS_ALARM BIT3
|
||||
|
||||
#define SET_IO_LEVEL BIT11 // 1: <20>ߵ<EFBFBD>ƽ
|
||||
|
||||
#define DISABLE_FR_ALARM 0
|
||||
#define DISABLE_PRESS_ALARM 0
|
||||
//------------------------------------------------------------------------------
|
||||
// for output IO Config
|
||||
#define IO_USE_BIT (BIT12 + BIT13 + BIT14 + BIT15)
|
||||
#define IOH_USE_BIT (BIT14 + BIT15)
|
||||
#define IOL_USE_BIT (BIT12 + BIT13)
|
||||
|
||||
// PB12 = LATCH
|
||||
// PB13 = PULSE
|
||||
//ALARM_LOW_Pin = pulse pin
|
||||
//#define IOL_USE_TO_FR 0 // 0
|
||||
//#define IOL_USE_TO_PRESS BIT12 // 1
|
||||
//#define IOL_USE_TO_PULSE BIT13 // 2
|
||||
#define IOL_USE_TO_FR 0 // 0
|
||||
#define IOL_USE_TO_PRESS BIT12 // 1
|
||||
|
||||
//ALARM_high_Pin = 4-20mA LATH pin
|
||||
//#define IOH_USE_TO_FR 0 // 0
|
||||
//#define IOH_USE_TO_PRESS BIT14 // 1
|
||||
//#define IOH_USE_TO_LATH BIT15 // 2
|
||||
|
||||
#define IOH_USE_TO_FR 0 // 0
|
||||
#define IOH_USE_TO_PRESS BIT14 // 1
|
||||
#define IOH_USE_TO_PULSE BIT15 // 2
|
||||
|
||||
//==============================================================================
|
||||
#define IO_ALARM_LOW SET_IO_LEVEL
|
||||
#define IO_ALARM_HIGH 0
|
||||
//==============================================================================
|
||||
// for alarm state2
|
||||
#define VALVE_STATE BIT0
|
||||
#define UPPER_PRESS_STATE BIT11
|
||||
#define LOWER_PRESS_STATE BIT12
|
||||
#define UPPER_FR_STATE BIT13 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޱ<EFBFBD><DEB1><EFBFBD>
|
||||
#define LOWER_FR_STATE BIT14 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޱ<EFBFBD><DEB1><EFBFBD>
|
||||
#define ACC_ALARM_STATE BIT15 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define MAX_DLEAY_ALARM_TIME 180
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
113
user/Interface/CurrentLoop.c
Executable file
113
user/Interface/CurrentLoop.c
Executable file
@@ -0,0 +1,113 @@
|
||||
#include "../main/SystemInclude.h"
|
||||
|
||||
|
||||
//##############################################################################
|
||||
#ifndef ENABLE_4_20MA_OUTPUT
|
||||
#pragma message("[undefined] ENABLE_4_20MA_OUTPUT")
|
||||
#elif(ENABLE_4_20MA_OUTPUT)
|
||||
//##############################################################################
|
||||
|
||||
//******************************************************************************
|
||||
void CurrentLoopInit(void)
|
||||
{
|
||||
#ifndef ENABLE_4_20MA_ALL
|
||||
#pragma message("[undefined] ENABLE_4_20MA_ALL")
|
||||
#elif(ENABLE_4_20MA_ALL)
|
||||
SysLoopChip = ReadShortParameterFromEEPROM(SYS_LOOP_CHIP, SYS_LOOP_CHIP_WIDTH, SYS_LOOP_CHIP_DEFAULT);
|
||||
if(SysLoopChip == DAC8760)
|
||||
{
|
||||
DAC8760Init(FR_20MA);
|
||||
#ifndef ENABLE_PRESSURE
|
||||
#pragma message("[undefined] ENABLE_PRESSURE")
|
||||
#elif(ENABLE_PRESSURE)
|
||||
DAC8760Init(PRESS_20MA);
|
||||
#endif
|
||||
}
|
||||
else if(SysLoopChip == AD5420)
|
||||
{
|
||||
AD5420Init(FR_20MA);
|
||||
#ifndef ENABLE_PRESSURE
|
||||
#pragma message("[undefined] ENABLE_PRESSURE")
|
||||
#elif(ENABLE_PRESSURE)
|
||||
AD5420Init(PRESS_20MA);
|
||||
#endif
|
||||
}
|
||||
#else
|
||||
|
||||
#ifndef ENABLE_USE_DAC8760
|
||||
#pragma message("[undefined] ENABLE_USE_DAC8760")
|
||||
#elif(ENABLE_USE_DAC8760)
|
||||
DAC8760Init(FR_20MA);
|
||||
#endif
|
||||
|
||||
#ifndef ENABLE_USE_AD5420
|
||||
#pragma message("[undefined] ENABLE_USE_AD5420")
|
||||
#elif(ENABLE_USE_AD5420)
|
||||
AD5420Init(FR_20MA);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
//******************************************************************************
|
||||
void CurrentLoopLopwerMode(void)
|
||||
{
|
||||
DisableDACSPI();
|
||||
|
||||
#ifndef ENABLE_USE_DACSOMI
|
||||
#pragma message("[undefined] ENABLE_USE_DACSOMI")
|
||||
#elif(ENABLE_USE_DACSOMI)
|
||||
DISABLE_DACSOMI();
|
||||
ENABLE_DACSOMI_OUTPUT();
|
||||
#endif
|
||||
|
||||
DISABLE_DACSIMO();
|
||||
ENABLE_DACSIMO_OUTPUT();
|
||||
CLR_DACSIMO();
|
||||
|
||||
DISABLE_DACCLK();
|
||||
ENABLE_DACCLK_OUTPUT();
|
||||
CLR_DACCLK();
|
||||
|
||||
LOOP_LATCH_PIN_OUTPUT();
|
||||
CLR_LOOP_LATCH();
|
||||
}
|
||||
|
||||
//******************************************************************************
|
||||
void ComputCurrentLoopAndOutput(void)
|
||||
{
|
||||
float LoopOutputValue;
|
||||
|
||||
if(flowRate > maxFlowRate) LoopOutputValue = 65535; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>20mA
|
||||
else
|
||||
{
|
||||
//unsigned long int tmp = maxFlowRate *10 / 12;
|
||||
LoopOutputValue = 65535;
|
||||
LoopOutputValue /= (float)maxFlowRate; //LoopOutputValue /= (unsigned long long int)LoopOutputMaxFlowrate;
|
||||
LoopOutputValue *= (float)flowRate; //<2F><><EFBFBD><EFBFBD>fr= (displayUpdata*65535)/maxFlowrate
|
||||
}
|
||||
|
||||
#ifndef ENABLE_4_20MA_ALL
|
||||
#pragma message("[undefined] ENABLE_4_20MA_ALL")
|
||||
#elif(ENABLE_4_20MA_ALL)
|
||||
if(SysLoopChip == DAC8760) DAC8760Output((unsigned int)LoopOutputValue, FR_20MA);
|
||||
else if(SysLoopChip == AD5420) AD5420Output((unsigned int)LoopOutputValue, FR_20MA);
|
||||
#else
|
||||
#ifndef ENABLE_USE_AD5420
|
||||
#pragma message("[undefined] ENABLE_USE_AD5420")
|
||||
#elif(ENABLE_USE_AD5420)
|
||||
AD5420Output((unsigned int)LoopOutputValue, FR_20MA);
|
||||
#endif
|
||||
|
||||
#ifndef ENABLE_USE_DAC8760
|
||||
#pragma message("[undefined] ENABLE_USE_DAC8760")
|
||||
#elif(ENABLE_USE_DAC8760)
|
||||
DAC8760Output((unsigned int)LoopOutputValue, FR_20MA);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
//##############################################################################
|
||||
#endif
|
||||
//##############################################################################
|
||||
46
user/Interface/CurrentLoop.h
Executable file
46
user/Interface/CurrentLoop.h
Executable file
@@ -0,0 +1,46 @@
|
||||
#ifndef __CurrentLoop_h__
|
||||
#define __CurrentLoop_h__
|
||||
|
||||
//##############################################################################
|
||||
#if(ENABLE_4_20MA_OUTPUT)
|
||||
//##############################################################################
|
||||
|
||||
#define FR_20MA 0
|
||||
#define PRESS_20MA 1
|
||||
//******************************************************************************
|
||||
#if(ENABLE_USE_SPI2)
|
||||
#define EnableDACSPI EnableSPI2
|
||||
#define DisableDACSPI DisableSPI2
|
||||
#define DACWriteData SPI2WriteData
|
||||
|
||||
#define DISABLE_DACSIMO DISABLE_SPI2SIMO
|
||||
#define ENABLE_DACSIMO_OUTPUT ENABLE_SPI2SIMO_OUTPUT
|
||||
#define CLR_DACSIMO CLR_SPI2SIMO
|
||||
|
||||
#define DISABLE_DACCLK DISABLE_SPI2CLK
|
||||
#define ENABLE_DACCLK_OUTPUT ENABLE_SPI2CLK_OUTPUT
|
||||
#define CLR_DACCLK CLR_SPI2CLK
|
||||
|
||||
#else
|
||||
#define EnableDACSPI EnableSPI
|
||||
#define DisableDACSPI DisableSPI
|
||||
#define DACWriteData SPIWriteData
|
||||
|
||||
#define DISABLE_DACSIMO DISABLE_SPISIMO
|
||||
#define ENABLE_DACSIMO_OUTPUT ENABLE_SPISIMO_OUTPUT
|
||||
#define CLR_DACSIMO CLR_SPISIMO
|
||||
|
||||
#define DISABLE_DACCLK DISABLE_SPICLK
|
||||
#define ENABLE_DACCLK_OUTPUT ENABLE_SPICLK_OUTPUT
|
||||
#define CLR_DACCLK CLR_SPICLK
|
||||
|
||||
#endif
|
||||
|
||||
void CurrentLoopInit(void);
|
||||
void CurrentLoopLopwerMode(void);
|
||||
void ComputCurrentLoopAndOutput(void);
|
||||
|
||||
//##############################################################################
|
||||
#endif
|
||||
//##############################################################################
|
||||
#endif
|
||||
125
user/Interface/Display.c
Executable file
125
user/Interface/Display.c
Executable file
@@ -0,0 +1,125 @@
|
||||
#include "../main/SystemInclude.h"
|
||||
//==============================================================================
|
||||
|
||||
//##############################################################################
|
||||
#ifndef ENABLE_LCD_DISPLAY
|
||||
#pragma message("[undefined] ENABLE_LCD_DISPLAY")
|
||||
#elif(ENABLE_LCD_DISPLAY)
|
||||
//##############################################################################
|
||||
|
||||
unsigned int displayBit;
|
||||
|
||||
/******************************************************************************/
|
||||
// Numeric preparation for output and display
|
||||
void NumericPrepForOutputAndDisplay(void)
|
||||
{
|
||||
if(currentMode.Bit.TurnOffSystem)
|
||||
{
|
||||
ClearDisplay();
|
||||
return;
|
||||
}
|
||||
|
||||
FlowrateDisplay(flowDisUnit);
|
||||
TotalFlowRateDisplay(AccDisUnit);
|
||||
TemperatureDisplay(voltageDetected[TPCB]);
|
||||
ErrorDisplay(alarmState);
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
#ifndef ENABLE_PRESSURE
|
||||
#pragma message("[undefined] ENABLE_PRESSURE")
|
||||
#elif(ENABLE_PRESSURE)
|
||||
PressDisplay();
|
||||
#else
|
||||
if(currentMode.Bit.ZeroCalib) ZeroCalibDisplay();
|
||||
else if(currentMode.Bit.DebugMode) DebugDisplay();
|
||||
else if(currentMode.Bit.CalibMode) CalibrationDisplay();
|
||||
else if((alarmState & HARD_ALARM) == HARD_ALARM) HardWareAlarmInfo(alarmState);
|
||||
else if(systemAlarm.Bit.GasChange) GasChangeDisplay();
|
||||
else CommAddrDisplay(localAddress);
|
||||
#endif
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
BatteryGridDisplay(batteryGrid);
|
||||
//LcdModeInit();
|
||||
LcdWriteDisplay();
|
||||
}
|
||||
|
||||
//******************************************************************************
|
||||
void AlarmFlashDisplay(void)
|
||||
{
|
||||
//ClearACCDisplay();
|
||||
//ErrorDisplay(alarmState);
|
||||
//------------------------------------------------------------------------------
|
||||
#ifndef ENABLE_LEAK_DETECT
|
||||
#pragma message("[undefined] ENABLE_LEAK_DETECT")
|
||||
#elif(ENABLE_LEAK_DETECT)
|
||||
if((alarmState1 & LEAK_ALARM) == LEAK_ALARM)
|
||||
{
|
||||
ClearDisplay();
|
||||
OtherAlarmInfo(alarmState1);
|
||||
LcdWriteDisplay();
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
#ifndef ENABLE_AUTO_CALIB_ATYPE_OFFSET
|
||||
#pragma message("[undefined] ENABLE_AUTO_CALIB_ATYPE_OFFSET")
|
||||
#elif(ENABLE_AUTO_CALIB_ATYPE_OFFSET)
|
||||
if(userInitial == NEED_FOR_INIT)
|
||||
{
|
||||
NoIniFlashDisplayFlowRate();
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
ClearErrorDisplay(alarmState);
|
||||
LcdWriteDisplay();
|
||||
}
|
||||
|
||||
//******************************************************************************
|
||||
//void ZeroFlowrateDisplay(void)
|
||||
//{
|
||||
// SetFlowDisplayToZero();
|
||||
// TotalFlowRateDisplay();
|
||||
// BatteryGridDisplay(batteryGrid);
|
||||
// TemperatureDisplay(voltageDetected[TPCB]);
|
||||
// ErrorDisplay(alarmState);
|
||||
//
|
||||
// if((alarmState & HARD_ALARM) == HARD_ALARM) HardWareAlarmInfo(alarmState);
|
||||
// else if(systemAlarm.Bit.GasChange) GasChangeDisplay();
|
||||
// else CommAddrDisplay(localAddress);
|
||||
//
|
||||
// LcdModeInit();
|
||||
// LcdWriteDisplay();
|
||||
//}
|
||||
|
||||
//******************************************************************************
|
||||
//void AlarmFlashDisplay(void)
|
||||
//{
|
||||
// ClearErrorDisplay(alarmState);
|
||||
// LcdWriteDisplay();
|
||||
//}
|
||||
|
||||
//******************************************************************************
|
||||
void DisplayInit(void)
|
||||
{
|
||||
LcdModeInit();
|
||||
DisplayAll();
|
||||
delay_ms(1500);
|
||||
ClearDisplay();
|
||||
delay_ms(1000);
|
||||
|
||||
MeterInfoDisplay();
|
||||
//delay_ms(3000);
|
||||
|
||||
//delay_ms(500);
|
||||
//ClearDisplay();
|
||||
//NumericPrepForOutputAndDisplay();
|
||||
}
|
||||
|
||||
|
||||
//##############################################################################
|
||||
#endif
|
||||
//##############################################################################
|
||||
|
||||
31
user/Interface/Display.h
Executable file
31
user/Interface/Display.h
Executable file
@@ -0,0 +1,31 @@
|
||||
#ifndef __Display_h__
|
||||
#define __Display_h__
|
||||
|
||||
//SLM<4C><4D>Standard Liter per Minute<74><65><EFBFBD>DZ<EFBFBD>ʾÿ<CABE><C3BF><EFBFBD>ӱ<EFBFBD><EFBFBD><D7BC><EFBFBD><EFBFBD>
|
||||
//SCCM<43><4D>Standard Cubic Centimeter per Minute<74><65><EFBFBD>DZ<EFBFBD>ʾÿ<CABE><C3BF><EFBFBD>ӱ<EFBFBD><EFBFBD><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//SCFM standard cubic foot per minute <20><><EFBFBD><D7BC><EFBFBD><EFBFBD>Ӣ<EFBFBD><D3A2>ÿ<EFBFBD><C3BF><EFBFBD>ӣ<EFBFBD>Ӣ<EFBFBD><D3A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
|
||||
//SCFH standard cubic foot per Hour <20><><EFBFBD><D7BC><EFBFBD><EFBFBD>Ӣ<EFBFBD><D3A2>ÿСʱ
|
||||
//SLPM stard liter per minute<74><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><D7BC><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD>
|
||||
|
||||
// for display mode
|
||||
#define NO_DIS_UPDATE 0x00
|
||||
#define NORMOL_UPDATE 0x01
|
||||
#define INIT_UPDATE 0x02
|
||||
#define FLASH_UPDATE 0x03
|
||||
|
||||
#ifndef ENABLE_LCD_DISPLAY
|
||||
#pragma message("[undefined] ENABLE_LCD_DISPLAY")
|
||||
#endif
|
||||
#if(ENABLE_LCD_DISPLAY)
|
||||
|
||||
extern unsigned int displayBit;
|
||||
|
||||
void NumericPrepForOutputAndDisplay(void);
|
||||
void DisplayInit(void);
|
||||
void AlarmFlashDisplay(void);
|
||||
void ZeroFlowrateDisplay(void);
|
||||
|
||||
/**********************************/
|
||||
#endif
|
||||
|
||||
#endif
|
||||
1102
user/Interface/KeyEdit.c
Executable file
1102
user/Interface/KeyEdit.c
Executable file
File diff suppressed because it is too large
Load Diff
51
user/Interface/KeyEdit.h
Executable file
51
user/Interface/KeyEdit.h
Executable file
@@ -0,0 +1,51 @@
|
||||
#ifndef __keyedit_h__
|
||||
#define __keyedit_h__
|
||||
|
||||
//low power keyboard define
|
||||
#define KEYBOARD_IDLE_TIME_BASIC (4095) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> 1S
|
||||
#define KEYBOARD_IDLE_TIME (60)
|
||||
|
||||
#define LEVEL_1_PASSWORD 1111
|
||||
#define LEVEL_2_PASSWORD 2222
|
||||
#define LEVEL_3_PASSWORD 520
|
||||
#define LEVEL_4_PASSWORD 4444
|
||||
|
||||
#define KEY_INIT_PASSWORD 0
|
||||
#define KEY_SET_METERFACTOR 1
|
||||
#define KEY_SET_COEFFIC 2
|
||||
#define KEY_CALIB_OFFSETC 3
|
||||
#define KEY_SET_PULSE 4
|
||||
#define KEY_SET_ADDR 5
|
||||
#define KEY_SET_DECIMAL_POINT 6
|
||||
#define KEY_SET_RETURN 7
|
||||
|
||||
//******************************************************************************
|
||||
extern bool isKeyPressed;
|
||||
extern unsigned int keyFlag, PassWord, keyTime, keyValue, keyBuff, menuIndex, modifyBit, keyFlashTime;
|
||||
extern unsigned int setKeyBuffer;
|
||||
extern unsigned long int temp_dcoefNode[];
|
||||
extern unsigned int temp_dcoefNum, temp_dcoefVal[];
|
||||
//******************************************************************************
|
||||
|
||||
void KeyReset(void);
|
||||
void DisableKeyInterrupt(void);
|
||||
void EnableKeyInterrupt(void);
|
||||
void KeyEditInit(void);
|
||||
void FlashBitForSetup(void);
|
||||
void ReadKeyValue(void);
|
||||
unsigned int SaveModifyValue(void);
|
||||
bool ReturnKeySetSub(void);
|
||||
unsigned int DisplaySetIndex(void);
|
||||
bool KeyPasswordInput(void);
|
||||
void ComputPassWordToArray(void);
|
||||
void ModifyMeterFactor(void);
|
||||
void ModifyDcoefNum(void);
|
||||
void ModifyDcoefNode(void);
|
||||
bool ModifyDcoefVal(void);
|
||||
void CalibrateOffsetC(void);
|
||||
void ModifyLPFactoryLiterPerPulse(void);
|
||||
void ModifyModBusAdr(void);
|
||||
void ModifyUartDecimalPoint(void);
|
||||
void KeyInputProcessing(void);
|
||||
|
||||
#endif
|
||||
15
user/Interface/MFC4B6B.tmp
Executable file
15
user/Interface/MFC4B6B.tmp
Executable file
@@ -0,0 +1,15 @@
|
||||
//##############################################################################
|
||||
#if(ENABLE_4_20MA_OUTPUT)
|
||||
//##############################################################################
|
||||
|
||||
#ifndef __CurrentLoop_h__
|
||||
#define __CurrentLoop_h__
|
||||
|
||||
void CurrentLoopInit(void);
|
||||
void CurrentLoopLopwerMode(void);
|
||||
void ComputCurrentLoopAndOutput(void);
|
||||
#endif
|
||||
|
||||
//##############################################################################
|
||||
#endif
|
||||
//##############################################################################
|
||||
348
user/Interface/Pulse - 副本.c
Executable file
348
user/Interface/Pulse - 副本.c
Executable file
@@ -0,0 +1,348 @@
|
||||
#include "../main/SystemInclude.h"
|
||||
|
||||
//******************************************************************************
|
||||
unsigned int PulsePeriod[3];
|
||||
//unsigned int PulsePeriod, PulseDuty, PulseDiv, PulseCapture;
|
||||
unsigned long int pulseCounter;
|
||||
signed int targetPulse;
|
||||
bool isPulseUpdaed;
|
||||
//******************************************************************************
|
||||
|
||||
//0.25s, 0.5s, 1s, 2s, 4s
|
||||
//const unsigned char PulseGain[] = {4, 2, 1, 1, 1}; // 0.25s *4, 0.5S*4,
|
||||
const unsigned char PulseGain[] = {16, 8, 4, 2, 1};
|
||||
//const unsigned int UpdateTimeVaule[] = {3768, 7372, 7372, 7372, 7372}; // 0.23s, 0.45s
|
||||
const unsigned int UpdateTimeVaule[] = {3768, 7372, 8192, 16384, 32768}; // 0.23s, 0.45s, 0.5s, 1s, 2s
|
||||
const unsigned int MaxPulseOutput[]={
|
||||
MAX_TIMER_PULSE>>2, MAX_TIMER_PULSE>>1, MAX_TIMER_PULSE*1 , MAX_TIMER_PULSE*2,
|
||||
MAX_TIMER_PULSE*4 }; // 0.25s, 0.5s, 1s, 2s, 4s
|
||||
//******************************************************************************
|
||||
// USER PULSE ( MAX FR = 3600 NM3)
|
||||
const unsigned int UserHighPulsePeriod[]={1022, 511, 341, 255, 204, 170, 146, 128, 114, 102, 93, 85, 79, 73, 68, 64, 60}; //> 32Hz < 512Hz
|
||||
const unsigned int UserLowPulsePeriod[]={8192, 4096, 2730, 2048, 1638, 1365, 1170, 1024}; // {4088, 2044, 1363, 1022}; //<32Hz
|
||||
//******************************************************************************
|
||||
//for 125KHz
|
||||
const unsigned int PULSE_TABLE[]={
|
||||
0,62501,31250,20834,15626,12501,10417,8929,7813,6945,6251,5682,5209,4808,
|
||||
4465,4167,3907,3677,3473,3290,3126,2977,2841,2718,2605,2501,2404,2315,2233,
|
||||
2156,2084,2017,1954,1894,1839,1786,1737,1690,1645,1603,1563,1525,1489,1454,
|
||||
1421,1389,1359,1330,1303,1276,1251,1226,1202,1180,1158,1137,1117,1097,1078,
|
||||
1060,1042,1025,1009,993,977,962,947,933,920,906,893,881,869,857,845,834,823,
|
||||
812,802,792,782,772,763,754,745,736,727,719,711,703,695,687,680,673,665,658,
|
||||
652,645,638,632,626,619,613,607,601,596,590,585,579,574,569,564,559,554,549,
|
||||
544,539,535,530,526,521,517,513,509,505,501,497,493,489,485,481,478,474,470,
|
||||
467,463,460,457,453,450,447,444,441,438,435,432,429,426,423,420,417,414,412,
|
||||
409,406,404,401,399,396,394,391,389,386,384,382,379,377,375,373,370,368,366,
|
||||
364,362,360,358,356,354,352,350,348,346,344,342,340,338,337,335,333,331,329,
|
||||
328,326,324,323,321,319,318,316,315,313,311,310,308,307,305,304,302,301,300,
|
||||
298,297,295,294,293,291,290,289,287,286,285,283,282,281,280,278,277,276,275,
|
||||
273,272,271,270,269,268,266,265,264,263,262,261,260,259,258,257,256,255,254,
|
||||
253,252,251,250,249,248,247,246,245,244,243,242,241,240,239,238,237,236,235,
|
||||
235,234,233,232,231,230,229,229,228,227,226,225,225,224,223,222,221,221,220,
|
||||
219,218,218,217,216,215,215,214,213,212,212,211,210,210,209,208,207,207,206,
|
||||
205,205,204,203,203,202,201,201,200,200,199,198,198,197,196,196,195,195,194,
|
||||
193,193,192,192,191,190,190,189,189,188,188,187,187,186,185,185,184,184,183,
|
||||
183,182,182,181,181,180,180,179,179,178,178,177,177,176,176,175,175,174,174,
|
||||
173,173,172,172,171,171,170,170,169,169,169,168,168,167,167,166,166,165,165,
|
||||
165,164,164,163,163,162,162,162,161,161,160,160,160,159,159,158,158,158,157,
|
||||
157,156,156,156,155,155,154,154,154,153,153,153,152,152,151,151,151,150,150,
|
||||
150,149,149,149,148,148,148,147,147,147,146,146,146,145,145,145,144,144,144,
|
||||
143,143,143,142,142,142,141,141,141,140,140,140,139,139,139,138,138,138,138,
|
||||
137,137,137,136,136,136,135,135,135,135,134,134,134,133,133,133,133,132,132,
|
||||
132,132,131,131,131,130,130,130,130,129,129,129,129,128,128,128,128,127,127,
|
||||
127,127,126,126,126,126,125,125,125,125,124,124,124,124,123,123,123,123,122,
|
||||
122,122,122,121,121,121,121 };
|
||||
|
||||
/******************************************************************************/
|
||||
void CapturePulseStart(unsigned int timerCLK)
|
||||
{
|
||||
P3SEL |= BIT2;
|
||||
P3DIR &= ~BIT2;
|
||||
CAPTURECTL &= ~(MC0+MC1); // <20>رն<D8B1>ʱ<EFBFBD><CAB1>
|
||||
CAPTURECCTL0 = COMPARE;
|
||||
CAPTURECCR0 = targetPulse;
|
||||
|
||||
CAPTURECTL = CONTINUOUS + DIV_1 + timerCLK + TIMER_CLR;
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
void DisableCapturePulse(void)
|
||||
{
|
||||
CAPTURECTL = TIMER_CLR;
|
||||
CAPTURECCTL0 = COMPARE; // start timer A
|
||||
CAPTUREEX0 = 0;
|
||||
CAPTURECCR0 = 0;
|
||||
|
||||
DISABLE_CAPTURE_INTERRUPT;
|
||||
P3SEL |= BIT2;
|
||||
P3DIR &= ~BIT2;
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
void CloseFloawRatePulse(void)
|
||||
{
|
||||
P3SEL &= ~BIT1; // ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˿ڵĵڶ<C4B5><DAB6><EFBFBD><EFBFBD><EFBFBD>
|
||||
P3DIR |= BIT1;
|
||||
|
||||
// HIGH Effective: IO=LOW, PULSE OUT = HIGH;
|
||||
// LOW Effective: IO=HIGH, PULSE OUT = LOW;
|
||||
if(PulseLevel == (unsigned int)LOW) P3OUT |= BIT1;
|
||||
else P3OUT &= ~BIT1;
|
||||
|
||||
PULSECTL = TIMER_CLR; // <20>رն<D8B1>ʱ<EFBFBD><CAB1>
|
||||
PULSECCR1 = 0;
|
||||
PULSECCR0 = 0;
|
||||
|
||||
DISABLE_PULSE_INTERRUPT;
|
||||
DISABLE_CAPTURE_INTERRUPT;
|
||||
isPulseUpdaed = 1;
|
||||
|
||||
CAPTURECTL = TIMER_CLR;
|
||||
CAPTURECCTL0 = COMPARE; // start timer A
|
||||
CAPTUREEX0 = 0;
|
||||
CAPTURECCR0 = 0;
|
||||
|
||||
DMADisableInterrupt(2);
|
||||
DMADisableAndStop(2);
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
void CompareLossCount(void)
|
||||
{
|
||||
unsigned int countTemp;
|
||||
|
||||
// stop pulse output capture timer
|
||||
//CAPTURECTL &= ~(MC0+MC1);
|
||||
//PULSECTL &= ~(MC0+MC1);
|
||||
|
||||
alarmState &= ~PULSE_ALARM;
|
||||
// compute lose pulse
|
||||
countTemp = CAPTURETAR;
|
||||
targetPulse = CAPTURECCR0;
|
||||
|
||||
if(countTemp >= (targetPulse >> 1))
|
||||
{
|
||||
targetPulse -= countTemp;
|
||||
if(targetPulse > 50) targetPulse = 50;
|
||||
}
|
||||
else if(targetPulse == 0) isPulseUpdaed = 1;
|
||||
else
|
||||
{
|
||||
targetPulse = 0;
|
||||
alarmState |= PULSE_ALARM;
|
||||
isPulseUpdaed = 1;
|
||||
}
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
void ReadyForCalibrationPulseOutput(void)
|
||||
{
|
||||
//select timer clock
|
||||
// for flowRate output pulse
|
||||
// set timer A0
|
||||
//(DCO clk(FREQ) = 2000000)
|
||||
//2000000/16 = 125000
|
||||
|
||||
CompareLossCount();
|
||||
targetPulse += (signed int)totalPulse;
|
||||
|
||||
if(targetPulse <= 0)
|
||||
{
|
||||
CloseFloawRatePulse();
|
||||
DisableCapturePulse();
|
||||
return;
|
||||
}
|
||||
//else if(targetPulse >= MAX_TIMER_PULSE) targetPulse = MAX_TIMER_PULSE;
|
||||
else if(targetPulse >= MaxPulseOutput[samplingInterval]) targetPulse = MaxPulseOutput[samplingInterval];
|
||||
|
||||
if(PulseLevel == (unsigned int)LOW) CapturePulseStart(TIMER_TACLK);
|
||||
else CapturePulseStart(TIMER_INVTACLK);
|
||||
DISABLE_CAPTURE_INTERRUPT;
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
targetPulse *= (unsigned int)PulseGain[samplingInterval];
|
||||
targetPulse >>= 2;
|
||||
//---------------------------------------------------------------------------
|
||||
PulsePeriod[1] = PULSE_TABLE[targetPulse];
|
||||
PulsePeriod[2] = PulsePeriod[1] >> 1;
|
||||
//---------------------------------------------------------------------------
|
||||
PULSECCTL0 &= ~CCIFG;
|
||||
if(isPulseUpdaed == 1)
|
||||
{
|
||||
DMADisableInterrupt(2);
|
||||
DMAInit(2, DMA_TA2CCR0, BURST_BLOCK+DMASA_INC+DMADA_INC, (unsigned int)&PulsePeriod, (unsigned int)&PULSETAR, 3);
|
||||
|
||||
// HIGH Effective: IO=LOW, PULSE OUT = HIGH;
|
||||
// LOW Effective: IO=HIGH, PULSE OUT = LOW;
|
||||
if(PulseLevel == (unsigned int)LOW) PULSECCTL1 = OUT_RESET_SET;
|
||||
else PULSECCTL1 = OUT_SET_RESET;
|
||||
|
||||
P3SEL |= BIT1;
|
||||
P3DIR |= BIT1;
|
||||
|
||||
PulsePeriod[0] = 0;
|
||||
PULSECTL = 0;
|
||||
PULSECCR0 = PulsePeriod[1];
|
||||
PULSECCR1 = PulsePeriod[2];
|
||||
PULSEEX0 = TAIDEX_7;
|
||||
//PULSECTL = UP_CCR0_0 + DIV_2 + TIMER_SMCLK;
|
||||
PULSECTL = UP_CCR0 + DIV_4 + TIMER_SMCLK;
|
||||
isPulseUpdaed = 0;
|
||||
}
|
||||
DMA2CTL |= DMAREQ + DMAEN;
|
||||
}
|
||||
|
||||
//******************************************************************************
|
||||
void ReadyForUserPulseOutput(void)
|
||||
{
|
||||
//select timer clock
|
||||
// for flowRate output pulse
|
||||
// stop pulse output capture timer
|
||||
// for 32768Hz
|
||||
|
||||
targetPulse = totalPulse;
|
||||
if(targetPulse == 0)
|
||||
{
|
||||
CloseFloawRatePulse();
|
||||
return;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
totalPulse *= (unsigned int)PulseGain[samplingInterval];
|
||||
totalPulse >>= 2;
|
||||
//---------------------------------------------------------------------------
|
||||
if(totalPulse < 32) PULSECCR0 = UserLowPulsePeriod[totalPulse>>2];
|
||||
else
|
||||
{
|
||||
totalPulse >>= 5;
|
||||
if(totalPulse > 16) totalPulse = 16;
|
||||
PULSECCR0 = UserHighPulsePeriod[totalPulse];
|
||||
}
|
||||
|
||||
PULSECTL |= TIMER_CLR;
|
||||
P3SEL |= BIT1;
|
||||
P3DIR |= BIT1;
|
||||
PULSECCR1 = PULSECCR0 >> 1;
|
||||
|
||||
// HIGH Effective: IO=LOW, PULSE OUT = HIGH;
|
||||
// LOW Effective: IO=HIGH, PULSE OUT = LOW;
|
||||
if(PulseLevel == (unsigned int)LOW)
|
||||
{
|
||||
PULSECCTL1 = OUT_RESET_SET;
|
||||
CapturePulseStart(TIMER_TACLK);
|
||||
}
|
||||
else
|
||||
{
|
||||
PULSECCTL1 = OUT_SET_RESET;
|
||||
CapturePulseStart(TIMER_INVTACLK);
|
||||
}
|
||||
|
||||
PulsePeriod[0] = (unsigned int)TIMER_CLR;
|
||||
CAPTURECCTL0 &= ~CCIFG;
|
||||
DMADisableInterrupt(2);
|
||||
DMAInit(2, DMA_TA1CCR0, SINGLE_TRAN+DMASA_UNCHANGED+DMADA_UNCHANGED, (unsigned int)&PulsePeriod, (unsigned int)&PULSECTL, 1);
|
||||
DMA2CTL |= DMAREQ + DMAEN;
|
||||
//DMAEnableInterrupt(2);
|
||||
|
||||
PULSEEX0 = 0;
|
||||
PULSECTL = UP_CCR0 + DIV_1 + TIMER_ACLK + TIMER_CLR;
|
||||
isPulseUpdaed = 1;
|
||||
|
||||
// ENABLE_CAPTURE_INTERRUPT;
|
||||
// PULSEEX0 = 0;
|
||||
// PULSECTL = UP_CCR0 + DIV_1 + TIMER_ACLK + TIMER_CLR;
|
||||
//
|
||||
// isPulseUpdaed = 1;
|
||||
// DMADisableAndStop(2);
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
//#pragma vector = PULSE_PERIOD_VECTOR
|
||||
//__interrupt void Pulse_isr(void)
|
||||
//{
|
||||
// disable_interrupts();
|
||||
// CloseFloawRatePulse();
|
||||
// DisableCapturePulse();
|
||||
//
|
||||
// enable_interrupts();
|
||||
//}
|
||||
|
||||
/******************************************************************************/
|
||||
//#pragma vector = DMA2_VECTOR
|
||||
//__interrupt void ClosePulse_isr(void)
|
||||
//{
|
||||
// intVector = DMAIV;
|
||||
// if(intVector != DMA2_VECTOR) return;
|
||||
// disable_interrupts();
|
||||
//
|
||||
// CloseFloawRatePulse();
|
||||
// DisableCapturePulse();
|
||||
// DMAEnableInterrupt(2);
|
||||
// enable_interrupts();
|
||||
//}
|
||||
|
||||
/******************************************************************************/
|
||||
//#pragma vector = CAPTURETACCP0_VECTOR
|
||||
//__interrupt void CloseCapture_isr(void)
|
||||
//{
|
||||
// disable_interrupts();
|
||||
//
|
||||
// CloseFloawRatePulse();
|
||||
// DisableCapturePulse();
|
||||
//
|
||||
// enable_interrupts();
|
||||
//}
|
||||
|
||||
/******************************************************************************/
|
||||
//set up flowRate PULSE OUTPUT
|
||||
void UpdateAccPulse(void)
|
||||
{
|
||||
if(isCalibMode) ReadyForCalibrationPulseOutput();
|
||||
else
|
||||
{
|
||||
pulseCounter += (unsigned long int)totalPulse;
|
||||
if(unitPerPulse < 51) ReadyForCalibrationPulseOutput();
|
||||
else ReadyForUserPulseOutput();
|
||||
}
|
||||
|
||||
totalPulse = 0;
|
||||
targetPulse = 0;
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
void SetPulseUpdateTime(void)
|
||||
{
|
||||
MAINTACCTL2 = COMPARE;
|
||||
MAINTACCR2 = UpdateTimeVaule[samplingInterval];
|
||||
MAINTACCTL2 &= ~CCIFG;
|
||||
MAINTACCTL2 |= CCIE;
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
void DisablePulseTimerInterrupt(void)
|
||||
{
|
||||
MAINTACCTL2 = 0;
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
void PulseParameterInit(void)
|
||||
{
|
||||
// for pulse output unit
|
||||
ReadMultiByteFromEEPROM(PULSE_UNIT, tempL.Byte, PULSE_UNIT_WIDTH, PARA_EEPROM);
|
||||
if(tempL.Byte[PULSE_UNIT_CRC] != CRC8(tempL.Byte, PULSE_UNIT_CRC)) factoryUnitPerPulse = PULSE_UNIT_DEFAULT;
|
||||
else factoryUnitPerPulse = tempL.Word[0];
|
||||
|
||||
// for pulse output cunter
|
||||
// ReadMultiByteFromEEPROM(PULSE_COUNTER, tempL.Byte, PULSE_COUNTER_WIDTH, PARA_EEPROM);
|
||||
// if(tempL.Byte[PULSE_COUNTER_CRC] != CRC8(tempL.Byte, PULSE_COUNTER_CRC)) pulseCounter = 0;
|
||||
// else pulseCounter = tempL.Word[0];
|
||||
|
||||
ReadMultiByteFromEEPROM(PULSE_LEVEL, tempL.Byte, PULSE_LEVEL_WIDTH, PARA_EEPROM);
|
||||
if(tempL.Byte[PULSE_LEVEL_CRC] != CRC8(tempL.Byte, PULSE_LEVEL_CRC)) PulseLevel = (unsigned int)HIGH;
|
||||
else PulseLevel = (unsigned int)tempL.Byte[0];
|
||||
// HIGH Effective: IO=LOW, PULSE OUT = HIGH;
|
||||
// LOW Effective: IO=HIGH, PULSE OUT = LOW;
|
||||
|
||||
DisableCapturePulse();
|
||||
CloseFloawRatePulse();
|
||||
}
|
||||
83
user/Interface/Pulse - 副本.h
Executable file
83
user/Interface/Pulse - 副本.h
Executable file
@@ -0,0 +1,83 @@
|
||||
#ifndef __Pulse_h__
|
||||
#define __Pulse_h__
|
||||
|
||||
#define PULSECCR0 TA2CCR0
|
||||
#define PULSECCR1 TA2CCR1
|
||||
#define PULSEEX0 TA2EX0
|
||||
#define PULSECTL TA2CTL
|
||||
#define PULSECCTL0 TA2CCTL0
|
||||
#define PULSECCTL1 TA2CCTL1
|
||||
#define PULSETAR TA2R
|
||||
#define PULSE_INT_VECTOR TIMER2_A1_VECTOR
|
||||
#define PULSE_PERIOD_VECTOR TIMER2_A0_VECTOR
|
||||
|
||||
#define DISABLE_PULSE_TA_INTERRUPT disable_TA2OV_interrupts()
|
||||
//#define ENABLE_PULSE_TA_INTERRUPT enable_TA2OV_interrupts()
|
||||
|
||||
#define DISABLE_PULSE_INTERRUPT disable_TA2CCP_interrupts(CCP0)
|
||||
#define ENABLE_PULSE_INTERRUPT enable_TA2CCP_interrupts(CCP0)
|
||||
|
||||
#define CAPTURECCR0 TA1CCR0
|
||||
#define CAPTUREEX0 TA1EX0
|
||||
#define CAPTURECTL TA1CTL
|
||||
#define CAPTURECCTL0 TA1CCTL0
|
||||
#define CAPTURETAR TA1R
|
||||
#define CAPTURETACCP0_VECTOR TIMER1_A0_VECTOR
|
||||
#define DISABLE_CAPTURE_INTERRUPT disable_TA1CCP_interrupts(CCP0)
|
||||
#define ENABLE_CAPTURE_INTERRUPT enable_TA1CCP_interrupts(CCP0)
|
||||
|
||||
#define CAPTURECCR1 TA1CCR1
|
||||
#define CAPTURECCTL1 TA1CCTL1
|
||||
#define CAPTURETACCP1_VECTOR TIMER1_A1_VECTOR
|
||||
#define DISABLE_UPDATEPERIOD_INTERRUPT disable_TA1CCP_interrupts(CCP1)
|
||||
#define ENABLE_UPDATEPERIOD_INTERRUPT enable_TA1CCP_interrupts(CCP1)
|
||||
|
||||
//******************************************************************************
|
||||
// for memory WIDTH
|
||||
#define PULSE_UNIT_WIDTH 3
|
||||
#define PULSE_LEVEL_WIDTH 2
|
||||
//#define PULSE_COUNTER_WIDTH 3
|
||||
|
||||
#define PULSE_BASE_WIDTH 6
|
||||
//******************************************************************************
|
||||
// for memory CRC
|
||||
#define PULSE_UNIT_CRC (PULSE_UNIT_WIDTH-1)
|
||||
//#define PULSE_COUNTER_CRC (PULSE_COUNTER_WIDTH-1)
|
||||
#define PULSE_LEVEL_CRC (PULSE_LEVEL_WIDTH-1)
|
||||
//******************************************************************************
|
||||
// for memory address
|
||||
#define PULSE_UNIT PULSE_BASE
|
||||
#define PULSE_LEVEL (PULSE_UNIT + PULSE_UNIT_WIDTH)
|
||||
//#define PULSE_COUNTER (PULSE_UNIT + PULSE_UNIT_WIDTH)
|
||||
|
||||
//******************************************************************************
|
||||
#define PULSE_UNIT_MAX 10000
|
||||
#define MAX_TIMER_PULSE 500
|
||||
#define PULSE_UPDATE_TIME 7372 // 450ms //6553 (400ms) // acc pulse update time: 400ms, 16384
|
||||
//******************************************************************************
|
||||
extern unsigned int PulsePeriod[];
|
||||
extern signed int targetPulse;
|
||||
extern unsigned long int pulseCounter;
|
||||
extern bool isPulseUpdaed;
|
||||
|
||||
extern const unsigned int MaxPulseOutput[];
|
||||
extern const unsigned int PULSE_TABLE[];
|
||||
//******************************************************************************
|
||||
void PulseParameterInit(void);
|
||||
void CapturePulseStart(unsigned int timerCLK);
|
||||
void DisableCapturePulse(void);
|
||||
void CloseFloawRatePulse(void);
|
||||
void CompareLossCount(void);
|
||||
void ReadyForCalibrationPulseOutput(void);
|
||||
//__interrupt void PulseUpdate_isr(void);
|
||||
void ReadyForUserPulseOutput(void);
|
||||
void SetPulseUpdateTime(void);
|
||||
void DisablePulseTimerInterrupt(void);
|
||||
//__interrupt void Pulse_isr(void);
|
||||
//__interrupt void ClosePulse_isr(void);
|
||||
//__interrupt void CloseCapture_isr(void);
|
||||
void UpdateAccPulse(void);
|
||||
bool ReadPulseUnitByInternalModbus(void);
|
||||
bool WritePulseUnitByInternalModbus(void);
|
||||
|
||||
#endif
|
||||
389
user/Interface/Pulse.c
Executable file
389
user/Interface/Pulse.c
Executable file
@@ -0,0 +1,389 @@
|
||||
#include "../main/SystemInclude.h"
|
||||
|
||||
#ifndef ENABLE_ACCPULSE
|
||||
#pragma message("[undefined] ENABLE_ACCPULSE")
|
||||
#elif(ENABLE_ACCPULSE)
|
||||
|
||||
#define PTAR 0
|
||||
#define PCCR0 1
|
||||
#define PCCR1 2
|
||||
#define PCCR2 3
|
||||
#define PCCR3 4
|
||||
#define PCCR4 5
|
||||
#define PCCR5 6
|
||||
#define PCCR6 7
|
||||
#define PTAIV 8
|
||||
#define PTAEX 9
|
||||
#define PT_MAX 10
|
||||
|
||||
//******************************************************************************
|
||||
s16 calibUnitPerPulse;
|
||||
u32 unitPerPulse;
|
||||
u16 PulsePeriod[PT_MAX];
|
||||
//u16 PulsePeriod, PulseDuty, PulseDiv, PulseCapture;
|
||||
u32 pulseCounter;
|
||||
s16 targetPulse;
|
||||
// bool isPulseUpdaed;
|
||||
//******************************************************************************
|
||||
//0.25s, 0.5s, 1s, 2s, 4s
|
||||
//const unsigned char PulseGain[] = {16, 8, 4, 2, 1};
|
||||
//const u16 UpdateTimeVaule[] = {3850, 7372, 7372, 7372, 7372}; // 0.235s, 0.45s, 0.5s, 1s, 2s
|
||||
//const u16 MaxPulseOutput[]={
|
||||
// MAX_TIMER_PULSE>>2, MAX_TIMER_PULSE>>1, MAX_TIMER_PULSE*1 , MAX_TIMER_PULSE*2,
|
||||
// MAX_TIMER_PULSE*4 }; // 0.25s, 0.5s, 1s, 2s, 4s
|
||||
|
||||
const u8 PulseGain[] = {32, 16, 8, 4, 2, 1};
|
||||
const u16 MaxPulseOutput[]={
|
||||
MAX_TIMER_PULSE>>3, MAX_TIMER_PULSE>>2, MAX_TIMER_PULSE>>1, MAX_TIMER_PULSE*1 , MAX_TIMER_PULSE*2,
|
||||
MAX_TIMER_PULSE*4 }; // 0.25s, 0.5s, 1s, 2s, 4s
|
||||
//******************************************************************************
|
||||
// USER PULSE ( MAX FR = 3600 NM3)
|
||||
const u16 UserHighPulsePeriod[]={
|
||||
1022, 511, 341, 255, 204, 170, 146, 128,
|
||||
114, 102, 93, 85, 79, 73, 68, 64,
|
||||
60, 55, 51, 48, 46, 45, 43, 41,
|
||||
39, 37, 36, 35, 34, 33, 32, 31, 30 }; //> 32Hz < 512Hz
|
||||
const u16 UserLowPulsePeriod[]={8192, 4096, 2730, 2048, 1638, 1365, 1170, 1024}; // {4088, 2044, 1363, 1022}; //<32Hz
|
||||
//******************************************************************************
|
||||
//select timer clock
|
||||
// for flowRate output pulse
|
||||
// set timer A0
|
||||
//(DCO clk(FREQ) = 2000000)
|
||||
//2000000/32 = 62500
|
||||
const u16 PULSE_TABLE[]={
|
||||
62500, 62499, 31250, 20833, 15625, 12500, 10416, 8928, 7812, 6944, 6250, 5681, 5208, 4807,
|
||||
4464, 4166, 3906, 3676, 3472, 3289, 3125, 2976, 2840, 2717, 2604, 2500, 2403, 2314, 2232,
|
||||
2155, 2083, 2016, 1953, 1893, 1838, 1785, 1736, 1689, 1644, 1602, 1562, 1524, 1488, 1453,
|
||||
1420, 1388, 1358, 1329, 1302, 1275, 1250, 1225, 1201, 1179, 1157, 1136, 1116, 1096, 1077,
|
||||
1059, 1041, 1024, 1008, 992, 976, 961, 946, 932, 919, 905, 892, 880, 868, 856, 844, 833,
|
||||
822, 811, 801, 791, 781, 771, 762, 753, 744, 735, 726, 718, 710, 702, 694, 686, 679, 672,
|
||||
664, 657, 651, 644, 637, 631, 625, 618, 612, 606, 600, 595, 589, 584, 578, 573, 568, 563,
|
||||
558, 553, 548, 543, 538, 534, 529, 525, 520, 516, 512, 508, 504, 500, 496, 492, 488, 484,
|
||||
480, 477, 473, 469, 466, 462, 459, 456, 452, 449, 446, 443, 440, 437, 434, 431, 428, 425,
|
||||
422, 419, 416, 413, 411, 408, 405, 403, 400, 398, 395, 393, 390, 388, 385, 383, 381, 378,
|
||||
376, 374, 372, 369, 367, 365, 363, 361, 359, 357, 355, 353, 351, 349, 347, 345, 343, 341,
|
||||
339, 337, 336, 334, 332, 330, 328, 327, 325, 323, 322, 320, 318, 317, 315, 314, 312, 310,
|
||||
309, 307, 306, 304, 303, 301, 300, 299, 297, 296, 294, 293, 292, 290, 289, 288, 286, 285,
|
||||
284, 282, 281, 280, 279, 277, 276, 275, 274, 272, 271, 270, 269, 268, 267, 265, 264, 263,
|
||||
262, 261, 260, 259, 258, 257, 256, 255, 254, 253, 252, 251, 250, 249, 248, 247, 246, 245,
|
||||
244, 243, 242, 241, 240, 239, 238, 237, 236, 235, 234, 234, 233, 232, 231, 230, 229, 228,
|
||||
228, 227, 226, 225, 224, 224, 223, 222, 221, 220, 220, 219, 218, 217, 217, 216, 215, 214,
|
||||
214, 213, 212, 211, 211, 210, 209, 209, 208, 207, 206, 206, 205, 204, 204, 203, 202, 202,
|
||||
201, 200, 200, 199, 199, 198, 197, 197, 196, 195, 195, 194, 194, 193, 192, 192, 191, 191,
|
||||
190, 189, 189, 188, 188, 187, 187, 186, 186, 185, 184, 184, 183, 183, 182, 182, 181, 181,
|
||||
180, 180, 179, 179, 178, 178, 177, 177, 176, 176, 175, 175, 174, 174, 173, 173, 172, 172,
|
||||
171, 171, 170, 170, 169, 169, 168, 168, 168, 167, 167, 166, 166, 165, 165, 164, 164, 164,
|
||||
163, 163, 162, 162, 161, 161, 161, 160, 160, 159, 159, 159, 158, 158, 157, 157, 157, 156,
|
||||
156, 155, 155, 155, 154, 154, 153, 153, 153, 152, 152, 152, 151, 151, 150, 150, 150, 149,
|
||||
149, 149, 148, 148, 148, 147, 147, 147, 146, 146, 146, 145, 145, 145, 144, 144, 144, 143,
|
||||
143, 143, 142, 142, 142, 141, 141, 141, 140, 140, 140, 139, 139, 139, 138, 138, 138, 137,
|
||||
137, 137, 137, 136, 136, 136, 135, 135, 135, 134, 134, 134, 134, 133, 133, 133, 132, 132,
|
||||
132, 132, 131, 131, 131, 131, 130, 130, 130, 129, 129, 129, 129, 128, 128, 128, 128, 127,
|
||||
127, 127, 127, 126, 126, 126, 126, 125, 125, 125, 125, 124, 124, 124, 124, 123, 123, 123,
|
||||
123, 122, 122, 122, 122 };
|
||||
|
||||
/******************************************************************************/
|
||||
void CapturePulseStart(u16 timerCLK)
|
||||
{
|
||||
// P3SEL |= BIT2;
|
||||
// P3DIR &= ~BIT2;
|
||||
// CAPTURECTL &= ~(MC0+MC1); // <20>رն<D8B1>ʱ<EFBFBD><CAB1>
|
||||
// CAPTURECCTL0 = COMPARE;
|
||||
// CAPTURECCR0 = targetPulse;
|
||||
//
|
||||
// CAPTURECTL = CONTINUOUS + DIV_1 + timerCLK; //TIMER_CLR;
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
void DisableCapturePulse(void)
|
||||
{
|
||||
// CAPTURECTL = TIMER_CLR;
|
||||
// CAPTURECCTL0 = COMPARE; // start timer A
|
||||
// CAPTUREEX0 = 0;
|
||||
// CAPTURECCR0 = 0;
|
||||
|
||||
// DISABLE_CAPTURE_INTERRUPT;
|
||||
// P3SEL |= BIT2;
|
||||
// P3DIR &= ~BIT2;
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
void CloseFloawRatePulse(void)
|
||||
{
|
||||
// P3SEL &= ~BIT1; // ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˿ڵĵڶ<C4B5><DAB6><EFBFBD><EFBFBD><EFBFBD>
|
||||
// P3DIR |= BIT1;
|
||||
//
|
||||
// // HIGH Effective: IO=LOW, PULSE OUT = HIGH;
|
||||
// // LOW Effective: IO=HIGH, PULSE OUT = LOW;
|
||||
// if(PulseLevel == (u16)LOW) P3OUT |= BIT1;
|
||||
// else P3OUT &= ~BIT1;
|
||||
//
|
||||
// PULSECCTL1 |= CCIFG;
|
||||
// PULSECTL = TIMER_CLR; // <20>رն<D8B1>ʱ<EFBFBD><CAB1>
|
||||
// PULSECCR1 = 0;
|
||||
// PULSECCR0 = 0;
|
||||
// PULSECCTL1 = 0;
|
||||
//
|
||||
// DISABLE_PULSE_INTERRUPT;
|
||||
// DISABLE_CAPTURE_INTERRUPT;
|
||||
// isPulseUpdaed = 1;
|
||||
//
|
||||
// CAPTURECTL = TIMER_CLR;
|
||||
// CAPTURECCTL0 = COMPARE; // start timer A
|
||||
// CAPTUREEX0 = 0;
|
||||
// CAPTURECCR0 = 0;
|
||||
//
|
||||
// DMADisableInterrupt(2);
|
||||
// DMADisableAndStop(2);
|
||||
|
||||
HWState.PulseOperate = 0;
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
void CompareLossCount(void)
|
||||
{
|
||||
// u16 countTemp;
|
||||
//
|
||||
//
|
||||
// systemAlarm.Bit.PulseAlarm = 1;
|
||||
// // compute lose pulse
|
||||
// countTemp = CAPTURETAR;
|
||||
// targetPulse = CAPTURECCR0;
|
||||
//
|
||||
// CAPTURECTL |= TIMER_CLR;
|
||||
// if(countTemp >= (targetPulse >> 1))
|
||||
// {
|
||||
// targetPulse -= countTemp;
|
||||
// if(targetPulse > 50) targetPulse = 50;
|
||||
// }
|
||||
// else if(targetPulse == 0)
|
||||
// {
|
||||
// isPulseUpdaed = 1;
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// targetPulse = 0;
|
||||
// isPulseUpdaed = 1;
|
||||
// }
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
void ReadyForCalibrationPulseOutput(void)
|
||||
{
|
||||
u16 countTemp;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>ѷ<EFBFBD><D1B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(HWState.PulseOperate) {
|
||||
// countTemp = CAPTURETAR;
|
||||
// targetPulse = (u16)CAPTURECCR0;
|
||||
// targetPulse -= countTemp;
|
||||
// CAPTURECTL |= TIMER_CLR;
|
||||
}
|
||||
else targetPulse = 0;
|
||||
|
||||
// <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
targetPulse += (s16)totalPulse;
|
||||
if(targetPulse <= 0) {
|
||||
CloseFloawRatePulse();
|
||||
return;
|
||||
}
|
||||
|
||||
// <20><><EFBFBD>㶨ʱ<E3B6A8><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
||||
totalPulse = (u16)targetPulse;
|
||||
totalPulse *= PulseOutGain[samplingInterval];
|
||||
totalPulse >>= 2;
|
||||
if(totalPulse >= MaxPulseOutput[RESP_1000MS]) totalPulse = MaxPulseOutput[RESP_1000MS];
|
||||
else if(totalPulse == 0) totalPulse = 1;
|
||||
//---------------------------------------------------------------------------
|
||||
// Table
|
||||
//PulsePeriod[PCCR0] = PULSE_TABLE[totalPulse];
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
// Compute
|
||||
// if(totalPulse < 16){
|
||||
// PulsePeriod[PTAEX]= TAIDEX_7;
|
||||
// PulsePeriod[PCCR0] = 62500/totalPulse;
|
||||
// }
|
||||
// else {
|
||||
// PulsePeriod[PTAEX]= TAIDEX_0;
|
||||
// PulsePeriod[PCCR0] = (u16)(500000/(unsigned long int)totalPulse);
|
||||
// }
|
||||
// //---------------------------------------------------------------------------
|
||||
// PulsePeriod[PCCR1] = PulsePeriod[PCCR0] >> 1;
|
||||
// //---------------------------------------------------------------------------
|
||||
// if(HWState.PulseOperate) {
|
||||
// DMA2CTL &= ~(DMAREQ + DMAEN);
|
||||
// DMADisableInterrupt(2);
|
||||
// //DMAInit(2, DMA_CAPTURE_UPDATE, BURST_BLOCK+DMASA_INC+DMADA_INC, (u16)&PulsePeriod[PTAR], (u16)&PULSETAR, 3);
|
||||
// DMAInit(2, DMA_CAPTURE_UPDATE, BURST_BLOCK+DMASA_INC+DMADA_INC, (u16)&PulsePeriod[PTAR], (u16)&PULSETAR, PT_MAX);
|
||||
|
||||
// countTemp = CAPTURETAR;
|
||||
// if(countTemp == targetPulse) {
|
||||
// CloseFloawRatePulse();
|
||||
// return;
|
||||
// }
|
||||
//
|
||||
// CAPTURECCR0 = targetPulse;
|
||||
// //PULSECTL |= UP_CCR0;
|
||||
// PULSECCTL0 &= ~CCIFG;
|
||||
// DMA2CTL |= DMAREQ + DMAEN;
|
||||
// }
|
||||
// // <20>״<EFBFBD><D7B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// else{
|
||||
// // HIGH Effective: IO=LOW, PULSE OUT = HIGH;
|
||||
// // LOW Effective: IO=HIGH, PULSE OUT = LOW;
|
||||
// if(PulseLevel == (u16)LOW) {
|
||||
// CapturePulseStart(TIMER_TACLK);
|
||||
// PULSECCTL1 = OUT_RESET_SET;
|
||||
// }
|
||||
// else {
|
||||
// CapturePulseStart(TIMER_INVTACLK);
|
||||
// PULSECCTL1 = OUT_SET_RESET;
|
||||
// }
|
||||
//
|
||||
// PulsePeriod[PTAR] = 0;
|
||||
// PulsePeriod[PCCR2] = 0;
|
||||
// PulsePeriod[PCCR3] = 0;
|
||||
// PulsePeriod[PCCR4] = 0;
|
||||
// PulsePeriod[PCCR5] = 0;
|
||||
// PulsePeriod[PCCR6] = 0;
|
||||
// PulsePeriod[PTAIV] = 0;
|
||||
//
|
||||
// PULSECTL = TIMER_CLR;
|
||||
// PULSECCR0 = PulsePeriod[PCCR0];
|
||||
// PULSECCR1 = PulsePeriod[PCCR1];
|
||||
//
|
||||
// PULSEEX0 = PulsePeriod[PTAEX]; // TAIDEX_7;
|
||||
// P3SEL |= BIT1;
|
||||
// P3DIR |= BIT1;
|
||||
// PULSECTL = UP_CCR0 + DIV_8 + TIMER_SMCLK + TIMER_CLR; // for SMCLK = 4MHz
|
||||
// }
|
||||
|
||||
HWState.PulseOperate = 1;
|
||||
}
|
||||
|
||||
//******************************************************************************
|
||||
void ReadyForUserPulseOutput(void)
|
||||
{
|
||||
//select timer clock
|
||||
// for flowRate output pulse
|
||||
// stop pulse output capture timer
|
||||
// for 32768Hz
|
||||
if(totalPulse == 0)
|
||||
{
|
||||
CloseFloawRatePulse();
|
||||
return;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嶨ʱֵ
|
||||
// targetPulse = (u16)totalPulse;
|
||||
// totalPulse = (u16)targetPulse;
|
||||
// totalPulse *= PulseOutGain[samplingInterval];
|
||||
// totalPulse >>= 2;
|
||||
// if(totalPulse >= MaxPulseOutput[RESP_1000MS]) totalPulse = MaxPulseOutput[RESP_1000MS];
|
||||
// else if(totalPulse == 0) totalPulse = 1;
|
||||
// //---------------------------------------------------------------------------
|
||||
// if(totalPulse < 32) PULSECCR0 = UserLowPulsePeriod[totalPulse >> 2];
|
||||
// else
|
||||
// {
|
||||
// totalPulse >>= 5;
|
||||
// if(totalPulse > 32) totalPulse = 32;
|
||||
// PULSECCR0 = UserHighPulsePeriod[totalPulse];
|
||||
// }
|
||||
//
|
||||
// CAPTURECTL |= TIMER_CLR;
|
||||
// PULSECTL |= TIMER_CLR;
|
||||
// P3SEL |= BIT1;
|
||||
// P3DIR |= BIT1;
|
||||
// PULSECCR1 = PULSECCR0 >> 1;
|
||||
//
|
||||
// // HIGH Effective: IO=LOW, PULSE OUT = HIGH;
|
||||
// // LOW Effective: IO=HIGH, PULSE OUT = LOW;
|
||||
// if(PulseLevel == (u16)LOW)
|
||||
// {
|
||||
// PULSECCTL1 = OUT_RESET_SET;
|
||||
// CapturePulseStart(TIMER_TACLK);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// PULSECCTL1 = OUT_SET_RESET;
|
||||
// CapturePulseStart(TIMER_INVTACLK);
|
||||
// }
|
||||
//
|
||||
// // <20><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD>ر<EFBFBD>
|
||||
// PulsePeriod[0] = (u16)TIMER_CLR;
|
||||
// CAPTURECCTL0 &= ~CCIFG;
|
||||
// DMADisableInterrupt(2);
|
||||
// DMAInit(2, DMA_CAPTURE_CLOSE, SINGLE_TRAN+DMASA_UNCHANGED+DMADA_UNCHANGED, (u16)&PulsePeriod, (u16)&PULSECTL, 1);
|
||||
// DMA2CTL |= DMAREQ + DMAEN;
|
||||
//
|
||||
// PULSEEX0 = 0;
|
||||
// PULSECTL = UP_CCR0 + DIV_1 + TIMER_ACLK + TIMER_CLR;
|
||||
|
||||
HWState.PulseOperate = 0;
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
//set up flowRate PULSE OUTPUT
|
||||
void UpdateAccPulse(void)
|
||||
{
|
||||
if(currentMode.Bit.CalibMode) ReadyForCalibrationPulseOutput();
|
||||
else
|
||||
{
|
||||
pulseCounter += (u32)totalPulse;
|
||||
//if(factoryUnitPerPulse <= CALIB_PULSE_DEFAULT) ReadyForCalibrationPulseOutput();
|
||||
//else ReadyForUserPulseOutput();
|
||||
}
|
||||
|
||||
totalPulse = 0;
|
||||
targetPulse = 0;
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
void PulseParameterInit(void)
|
||||
{
|
||||
// for pulse output unit
|
||||
ReadMultiByteFromEEPROM(PULSE_UNIT, tempL.Byte, PULSE_UNIT_WIDTH, PARA_EEPROM);
|
||||
if(tempL.Byte[PULSE_UNIT_CRC] != CRC8(tempL.Byte, PULSE_UNIT_CRC)) factoryUnitPerPulse = PULSE_UNIT_DEFAULT;
|
||||
else factoryUnitPerPulse = tempL.Word[0];
|
||||
|
||||
ReadMultiByteFromEEPROM(CALIB_PULSE, tempL.Byte, CALIB_PULSE_WIDTH, PARA_EEPROM);
|
||||
if(tempL.Byte[CALIB_PULSE_CRC] != CRC8(tempL.Byte, CALIB_PULSE_CRC)) calibUnitPerPulse = CALIB_PULSE_DEFAULT;
|
||||
else calibUnitPerPulse = tempL.Word[0];
|
||||
|
||||
// for pulse output cunter
|
||||
// ReadMultiByteFromEEPROM(PULSE_COUNTER, tempL.Byte, PULSE_COUNTER_WIDTH, PARA_EEPROM);
|
||||
// if(tempL.Byte[PULSE_COUNTER_CRC] != CRC8(tempL.Byte, PULSE_COUNTER_CRC)) pulseCounter = 0;
|
||||
// else pulseCounter = tempL.Word[0];
|
||||
|
||||
ReadMultiByteFromEEPROM(PULSE_LEVEL, tempL.Byte, PULSE_LEVEL_WIDTH, PARA_EEPROM);
|
||||
if(tempL.Byte[PULSE_LEVEL_CRC] != CRC8(tempL.Byte, PULSE_LEVEL_CRC)) PulseLevel = (u16)PULSE_LEVEL_DEFAULT;
|
||||
else PulseLevel = (u16)tempL.Byte[0];
|
||||
// HIGH Effective: IO=LOW, PULSE OUT = HIGH;
|
||||
// LOW Effective: IO=HIGH, PULSE OUT = LOW;
|
||||
|
||||
DisableCapturePulse();
|
||||
CloseFloawRatePulse();
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
u32 InitPulseUnit(s16 unitPulse)
|
||||
{
|
||||
switch(unitPulse)
|
||||
{
|
||||
//case PULSE_0_1ML: return PULSE_0_1ML_VAL;
|
||||
case PULSE_1ML: return PULSE_1ML_VAL;
|
||||
case PULSE_10ML: return PULSE_10ML_VAL;
|
||||
case PULSE_100ML: return PULSE_100ML_VAL;
|
||||
case PULSE_1L: return PULSE_1L_VAL;
|
||||
case PULSE_10L: return PULSE_10L_VAL;
|
||||
case PULSE_100L: return PULSE_100L_VAL;
|
||||
case PULSE_1000L: return PULSE_1000L_VAL;
|
||||
//case PULSE_10000L: return PULSE_10000L_VAL;
|
||||
default:
|
||||
return InitPulseUnit(PULSE_UNIT_DEFAULT);
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
36
user/Interface/Pulse.h
Executable file
36
user/Interface/Pulse.h
Executable file
@@ -0,0 +1,36 @@
|
||||
#ifndef __Pulse_h__
|
||||
#define __Pulse_h__
|
||||
|
||||
//******************************************************************************
|
||||
//#define PULSE_UNIT_MAX 10000
|
||||
#define MAX_TIMER_PULSE 1000//500
|
||||
#define PULSE_UPDATE_TIME 7372 // 450ms //6553 (400ms) // acc pulse update time: 400ms, 16384
|
||||
|
||||
//******************************************************************************
|
||||
extern u16 PulsePeriod[];
|
||||
extern s16 targetPulse;
|
||||
extern u32 pulseCounter, unitPerPulse;
|
||||
extern u16 isPulseUpdaed;
|
||||
|
||||
extern s16 calibUnitPerPulse;
|
||||
//extern const u16 MaxPulseOutput[];
|
||||
extern const u16 PULSE_TABLE[];
|
||||
//******************************************************************************
|
||||
void PulseParameterInit(void);
|
||||
void CapturePulseStart(u16 timerCLK);
|
||||
void DisableCapturePulse(void);
|
||||
void CloseFloawRatePulse(void);
|
||||
void CompareLossCount(void);
|
||||
void ReadyForCalibrationPulseOutput(void);
|
||||
//__interrupt void PulseUpdate_isr(void);
|
||||
void ReadyForUserPulseOutput(void);
|
||||
void DisablePulseTimerInterrupt(void);
|
||||
//__interrupt void Pulse_isr(void);
|
||||
//__interrupt void ClosePulse_isr(void);
|
||||
//__interrupt void CloseCapture_isr(void);
|
||||
void UpdateAccPulse(void);
|
||||
u16 ReadPulseUnitByInternalModbus(void);
|
||||
u16 WritePulseUnitByInternalModbus(void);
|
||||
u32 InitPulseUnit(s16 unitPulse);
|
||||
|
||||
#endif
|
||||
56
user/Interface/PulseDefine.h
Executable file
56
user/Interface/PulseDefine.h
Executable file
@@ -0,0 +1,56 @@
|
||||
/****************************************************************************
|
||||
** pulse.h
|
||||
**
|
||||
** Copyright (c) Siargo Ltd. 2020
|
||||
** All Rights Reserved.
|
||||
**
|
||||
** BY HYY
|
||||
**
|
||||
** pulse.c<>ĺ궨<C4BA><EAB6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
**
|
||||
**
|
||||
** <20>ļ<EFBFBD><C4BC><EFBFBD>ʷ
|
||||
** 2020-04-27 <20><><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>
|
||||
*****************************************************************************/
|
||||
/* Define to prevent recursive inclusion -------------------------------------*/
|
||||
#ifndef __PulseDefine_H__
|
||||
#define __PulseDefine_H__
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* Includes ------------------------------------------------------------------*/
|
||||
|
||||
/* <20>궨<EFBFBD><EAB6A8> ----------------------------------------------------------------*/
|
||||
#define PULSE_0_1ML -4
|
||||
#define PULSE_1ML -3
|
||||
#define PULSE_10ML -2
|
||||
#define PULSE_100ML -1
|
||||
#define PULSE_1L 0
|
||||
#define PULSE_10L 1
|
||||
#define PULSE_100L 2
|
||||
#define PULSE_1000L 3
|
||||
#define PULSE_10000L 4
|
||||
|
||||
#define PULSE_1ML_VAL 1
|
||||
#define PULSE_10ML_VAL 10
|
||||
#define PULSE_100ML_VAL 100
|
||||
#define PULSE_1L_VAL 1000
|
||||
#define PULSE_10L_VAL 10000
|
||||
#define PULSE_100L_VAL 100000
|
||||
#define PULSE_1000L_VAL 1000000
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /*__ pulse_H */
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/************************ Copyright (c) Siargo Ltd. 2020 *****END OF FILE****/
|
||||
1306
user/Interface/StdKeyEdit 0810.c
Executable file
1306
user/Interface/StdKeyEdit 0810.c
Executable file
File diff suppressed because it is too large
Load Diff
158
user/Interface/StdKeyEdit 0810.h
Executable file
158
user/Interface/StdKeyEdit 0810.h
Executable file
@@ -0,0 +1,158 @@
|
||||
//##############################################################################
|
||||
#if(ENABLE_KEY_FUNCTION)
|
||||
//##############################################################################
|
||||
|
||||
#ifndef __StdKeyEdit_h__
|
||||
#define __StdKeyEdit_h__
|
||||
|
||||
//low power keyboard define
|
||||
#define KEYBOARD_IDLE_TIME_BASIC (4095) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> 1S
|
||||
#define KEYBOARD_IDLE_TIME (60)
|
||||
|
||||
#define LEVEL_1_PASSWORD 1111
|
||||
#define LEVEL_2_PASSWORD 2222
|
||||
#define LEVEL_3_PASSWORD 520
|
||||
#define LEVEL_4_PASSWORD 4444
|
||||
|
||||
#define KEY_INIT_PASSWORD 0
|
||||
#define KEY_SET_METERFACTOR 1
|
||||
#define KEY_SET_COEFFIC 2
|
||||
#define KEY_CALIB_OFFSETC 3
|
||||
#define KEY_SET_PULSE 4
|
||||
#define KEY_SET_ADDR 5
|
||||
#define KEY_SET_DECIMAL_POINT 6
|
||||
#define KEY_SET_RETURN 7
|
||||
|
||||
//******************************************************************************
|
||||
// KEY FUNCTION DEFINE
|
||||
#define STD_INIT_PASSWORD 0
|
||||
//<2F>ӿ<EFBFBD><D3BF>ࣨF1-F10<31><30>
|
||||
#define STD_KEY_PRTCL 1 // F1 ͨѶЭ<D1B6><D0AD> PRTCL
|
||||
#define STD_KEY_ADDR 2 // F2 <09>ӻ<EFBFBD><D3BB><EFBFBD>ַ ADDR
|
||||
#define STD_KEY_BPS 3 // F3 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> BPS
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>ࣨF11-F30<33><30>
|
||||
#define STD_KEY_OFFST 11 // F11 У<D0A3><D7BC><EFBFBD><EFBFBD> OFFST
|
||||
#define STD_KEY_GCF 12 // F12 GCF GCF
|
||||
#define STD_KEY_FACTR 13 // F13 <09>DZ<EFBFBD>ϵ<EFBFBD><CFB5> FACTR
|
||||
#define STD_KEY_CORR 14 // F14 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5> CORR
|
||||
#define STD_KEY_FS 15 // F15 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> FS
|
||||
#define STD_KEY_RESPS 16 // F16 <09><>Ӧʱ<D3A6><CAB1> RESPS
|
||||
|
||||
#define STD_KEY_CUT_F 28 // F28 С<><D0A1><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD> CUT-F
|
||||
#define STD_KEY_DIAM 29 // F29 <09>ܾ<EFBFBD><DCBE><EFBFBD><EFBFBD><EFBFBD> DIAM
|
||||
|
||||
// <20><>ʾ<EFBFBD>ࣨF31-F40<34><30>
|
||||
#define STD_KEY_UNT_A 31 // F31 <09>ۻ<EFBFBD><DBBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ UNT-A
|
||||
#define STD_KEY_UNT_F 32 // F32 ʵʱ<CAB5><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ UNT-F
|
||||
#define STD_KEY_UNT_P 33 // F33 ѹ<><D1B9><EFBFBD><EFBFBD>λ UNT-P
|
||||
|
||||
#define STD_KEY_DISP 39 // F39 <09><>ʾģʽ DISP
|
||||
|
||||
// ģ<><C4A3><EFBFBD>ӿ<EFBFBD><D3BF>ࣨF31-F40<34><30>
|
||||
#define STD_KEY_PULSE 41 // F41 <09><><EFBFBD>嵱<EFBFBD><E5B5B1> PULSE
|
||||
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>ࣨF41-F50<35><30>
|
||||
#define STD_KEY_ALM_H 51 // F51 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ALM-H
|
||||
#define STD_KEY_ALM_L 52 // F52 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ALM-L
|
||||
#define STD_KEY_ALM_A 53 // F53 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ALM-A
|
||||
#define STD_KEY_ALM_T 54 // F54 ʱ<>䱨<EFBFBD><E4B1A8> ALM-T
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>ࣨF71-F90<39><30>
|
||||
#define STD_KEY_LORA_ADDR 71 // F71 LORA<52><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ LR-ID
|
||||
#define STD_KEY_LORA_ID 72 // F72 LORA<52>ϼ<EFBFBD><CFBC><EFBFBD>ַ NETID
|
||||
#define STD_KEY_LORA_CHAN 73 // F73 LORA<52>ŵ<EFBFBD> LR_CH
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>ࣨF91-F98<39><38>
|
||||
#define STD_KEY_PASS 91 // F91 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> PASS
|
||||
#define STD_KEY_CLR_A 92 // F92 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CLR-A
|
||||
#define STD_KEY_CLR_T 93 // F93 <09><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> CLR-T
|
||||
#define STD_KEY_RESET_DCOEF 94 // F94 <09>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> RS2ND
|
||||
|
||||
// <20>˳<EFBFBD>
|
||||
#define STD_KEY_QUIT 99 // F99 <09>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD> QUIT
|
||||
#define STD_RETURN 100 // <20>˳<EFBFBD><CBB3><EFBFBD><EFBFBD>̲<EFBFBD><CCB2><EFBFBD>
|
||||
|
||||
//******************************************************************************
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define FUN_PROMPT1 0
|
||||
#define FUN_PROMPT2 1
|
||||
#define FUN_PROMPT3 2
|
||||
#define FUN_PROMPT4 3
|
||||
#define FUN_PROMPT5 4
|
||||
#define FUN_DECIMAL 5 //
|
||||
|
||||
#define FUN_CODE_1 10
|
||||
#define FUN_CODE_2 11
|
||||
#define FUN_CODE_3 12
|
||||
#define FUN_CODE_4 13
|
||||
|
||||
//******************************************************************************
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>䶨<EFBFBD><E4B6A8>
|
||||
#define KEY_RESPONSE_TIME 1600
|
||||
#define KEY_HOLD_TIME 32768
|
||||
#define KEY_FREE_TIME 1600
|
||||
//******************************************************************************
|
||||
#define DIS_PARA_INT 0
|
||||
#define DISPLAY_MENU 1
|
||||
#define FLASH_BIT 2
|
||||
//******************************************************************************
|
||||
#define NEXT 0
|
||||
#define SAVE 1
|
||||
#define NO 2
|
||||
//******************************************************************************
|
||||
extern unsigned int setKeyType, setIndex;
|
||||
extern unsigned int keyDealFlag;
|
||||
|
||||
extern bool isKeyPressed;
|
||||
extern unsigned int keyFlag, PassWord, totalTime, keyValue, keyBuff, menuIndex, modifyBit, keyFlashTime, timerTar;
|
||||
extern unsigned long int setKeyBuffer;
|
||||
extern unsigned long int temp_dcoefNode[];
|
||||
extern unsigned int temp_dcoefNum, temp_dcoefVal[];
|
||||
//******************************************************************************
|
||||
void DisplayForKeyOperation(void);
|
||||
__interrupt void KeyInterrupt_isr(void);
|
||||
void KeyReset(void);
|
||||
void DisableKeyInterrupt(void);
|
||||
void EnableKeyInterrupt(void);
|
||||
void KeyEditInit(void);
|
||||
void FlashBitForSetup(void);
|
||||
void ComputeTime(void);
|
||||
void ReadKeyValue(void);
|
||||
unsigned long int ComputeSumOfFiveDigits(unsigned int modifyFirstBit, unsigned int modifyLastBit);
|
||||
void JudgeKeySetMax(unsigned int setBit, unsigned int endBit);
|
||||
void JudgeKeySetMin(unsigned int setBit, unsigned int endBit);
|
||||
void InitOfSettingArea(unsigned long int setValue, unsigned int startBit, unsigned int setLen);
|
||||
void InitOfSettingPrompt(const unsigned char *PromptF, const unsigned char *Prompt);
|
||||
void ReturnKeySetup(void);
|
||||
void SettingKeyPrompt(const unsigned char *Prompt);
|
||||
void JudgeSaveAndReturn(unsigned long int judgeValue, unsigned int setGain);
|
||||
bool KeyValueOperation(unsigned int modifyFirstBit, unsigned int modifyLastBit);
|
||||
bool KeyValueOperateForPrompt(const unsigned char *Prompt);
|
||||
void DisplaySetIndex(void);
|
||||
unsigned int SaveModifyValue(void);
|
||||
void ExitKeyOperation(void);
|
||||
bool KeyPasswordInput(void);
|
||||
void JudgePasswordInput(unsigned int activePassword);
|
||||
bool ExitCurrentSetup(void);
|
||||
void ModifyMeterFactor(void);
|
||||
void ModifyDcoefNum(void);
|
||||
void SelectDcoefNode(void);
|
||||
void ModifyDcoefNode(void);
|
||||
void ModifyDcoefVal(void);
|
||||
void ModifyDcoefNodeAndValue(void);
|
||||
void ModifyMaxFlowRate(void);
|
||||
void ModifySamplingInterval(void);
|
||||
void ResetDcoefNodeAndValue(void);
|
||||
void CalibrateOffsetC(void);
|
||||
void ModifyWorkDiameter(void);
|
||||
void ModifyLPFactoryLiterPerPulse(void);
|
||||
void ModifyModBusAdr(void);
|
||||
void ModifyUartDecimalPoint(void);
|
||||
void KeyInputProcessing(void);
|
||||
|
||||
#endif
|
||||
|
||||
//##############################################################################
|
||||
#endif
|
||||
//##############################################################################
|
||||
1743
user/Interface/StdKeyEdit.c
Executable file
1743
user/Interface/StdKeyEdit.c
Executable file
File diff suppressed because it is too large
Load Diff
57
user/Interface/StdKeyEdit.h
Executable file
57
user/Interface/StdKeyEdit.h
Executable file
@@ -0,0 +1,57 @@
|
||||
#ifndef __StdKeyEdit_h__
|
||||
#define __StdKeyEdit_h__
|
||||
|
||||
//##############################################################################
|
||||
#if(ENABLE_KEY_FUNCTION)
|
||||
//##############################################################################
|
||||
|
||||
#define ENABLE_LED_DISPLAY 0
|
||||
//******************************************************************************
|
||||
extern unsigned int setKeyType, setIndex;
|
||||
extern unsigned int keyDealFlag;
|
||||
|
||||
extern unsigned int keyFlag, totalTime, keyValue, keyBuff, menuIndex, modifyBit, keyFlashTime, timerTar;
|
||||
extern unsigned long int setKeyBuffer, PassWord;
|
||||
extern unsigned long int temp_dcoefNode[];
|
||||
extern unsigned int temp_dcoefNum, temp_dcoefVal[];
|
||||
//******************************************************************************
|
||||
void DisplayForKeyOperation(void);
|
||||
__interrupt void KeyInterrupt_isr(void);
|
||||
void KeyReturn(void);
|
||||
void KeyReset(void);
|
||||
void DisableKeyInterrupt(void);
|
||||
void EnableKeyInterrupt(void);
|
||||
void KeyEditInit(void);
|
||||
void FlashBitForSetup(void);
|
||||
bool ReadFunKey(void);
|
||||
bool ReadDecKey(void);
|
||||
bool ReadIncKey(void);
|
||||
void ReadKeyValue(void);
|
||||
unsigned long int ComputeSumOfFiveDigits(unsigned int modifyFirstBit, unsigned int modifyLastBit);
|
||||
void JudgeKeySetMax(unsigned int setBit, unsigned int endBit);
|
||||
void JudgeKeySetMin(unsigned int setBit, unsigned int endBit);
|
||||
void SettingKeyPrompt(const unsigned char*Prompt);
|
||||
void InitOfSettingArea(unsigned long int setValue, unsigned int startBit, unsigned int setLen) ;
|
||||
void InitOfSettingPrompt(const unsigned char*PromptF, const unsigned char*Prompt) ;
|
||||
void ReturnKeySetup(void);
|
||||
bool KeyValueOperation(unsigned int modifyFirstBit, unsigned int modifyLastBit);
|
||||
bool KeyValueOperateForPrompt(const unsigned char *Prompt, unsigned int selectMax, unsigned int selectMin);
|
||||
bool KeyValueOperateForArray(unsigned char *Prompt, unsigned int selectMax);
|
||||
void DisplaySetIndex(void);
|
||||
unsigned int SaveModifyValue(void);
|
||||
void ExitKeyOperation(void);
|
||||
void JudgeSaveAndReturn(unsigned long int judgeValue, unsigned int setGain);;
|
||||
bool KeyPasswordInput(void);
|
||||
void JudgePasswordInput(unsigned long int activePassword);
|
||||
bool ExitCurrentSetup(void);
|
||||
bool ParameterSetup(void);
|
||||
void SelectDcoefNode(void);
|
||||
void ModifyDcoefNode(void);
|
||||
void ModifyDcoefVal(void);
|
||||
void ModifyDcoefNodeAndValue(void);
|
||||
void KeyInputProcessing(void);
|
||||
|
||||
//##############################################################################
|
||||
#endif
|
||||
//##############################################################################
|
||||
#endif
|
||||
138
user/Interface/StdKeyEditDefine.h
Executable file
138
user/Interface/StdKeyEditDefine.h
Executable file
@@ -0,0 +1,138 @@
|
||||
#ifndef __StdKeyEditDefine_h__
|
||||
#define __StdKeyEditDefine_h__
|
||||
|
||||
//low power keyboard define
|
||||
#define KEYBOARD_IDLE_TIME_BASIC (4095) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> 1S
|
||||
#define KEYBOARD_IDLE_TIME (60)
|
||||
|
||||
#define LEVEL_1_PASSWORD 85139
|
||||
#define LEVEL_2_PASSWORD 22222 //22222
|
||||
#define LEVEL_3_PASSWORD 00520
|
||||
#define LEVEL_4_PASSWORD 44444 //44444
|
||||
|
||||
#define KEY_INIT_PASSWORD 0
|
||||
#define KEY_SET_METERFACTOR 1
|
||||
#define KEY_SET_COEFFIC 2
|
||||
#define KEY_CALIB_OFFSETC 3
|
||||
#define KEY_SET_PULSE 4
|
||||
#define KEY_SET_ADDR 5
|
||||
#define KEY_SET_DECIMAL_POINT 6
|
||||
#define KEY_SET_RETURN 7
|
||||
|
||||
//******************************************************************************
|
||||
// KEY FUNCTION DEFINE
|
||||
#define STD_INIT_PASSWORD 0
|
||||
//<2F>ӿ<EFBFBD><D3BF>ࣨF1-F10<31><30>
|
||||
#define STD_KEY_PRTCL 1 // F1 ͨѶЭ<D1B6><D0AD> PRTCL
|
||||
#define STD_KEY_ADDR 2 // F2 <09>ӻ<EFBFBD><D3BB><EFBFBD>ַ ADDR
|
||||
#define STD_KEY_BPS 3 // F3 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> BPS
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>ࣨF11-F30<33><30>
|
||||
#define STD_KEY_OFFST 11 // F11 У<D0A3><D7BC><EFBFBD><EFBFBD> OFFST
|
||||
#define STD_KEY_GCF 12 // F12 GCF GCF
|
||||
#define STD_KEY_FACTR 13 // F13 <09>DZ<EFBFBD>ϵ<EFBFBD><CFB5> FACTR
|
||||
#define STD_KEY_CORR 14 // F14 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5> CORR
|
||||
#define STD_KEY_FS 15 // F15 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> FS
|
||||
#define STD_KEY_RESPS 16 // F16 <09><>Ӧʱ<D3A6><CAB1> RESPS
|
||||
|
||||
#define STD_KEY_CUT_F 28 // F28 С<><D0A1><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD> CUT-F
|
||||
#define STD_KEY_DIAM 29 // F29 <09>ܾ<EFBFBD><DCBE><EFBFBD><EFBFBD><EFBFBD> DIAM
|
||||
|
||||
// <20><>ʾ<EFBFBD>ࣨF31-F40<34><30>
|
||||
#define STD_KEY_UNT_A 31 // F31 <09>ۻ<EFBFBD><DBBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ UNT-A
|
||||
#define STD_KEY_UNT_F 32 // F32 ʵʱ<CAB5><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ UNT-F
|
||||
#define STD_KEY_UNT_P 33 // F33 ѹ<><D1B9><EFBFBD><EFBFBD>λ UNT-P
|
||||
#define STD_KEY_DISP 38 // F38 <09><>ʾģʽ DISP
|
||||
#define STD_KEY_DIS_LANGUAGE 39 // F39 <09><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>ģʽ LANG
|
||||
|
||||
|
||||
// ģ<><C4A3><EFBFBD>ӿ<EFBFBD><D3BF>ࣨF31-F40<34><30>
|
||||
#define STD_KEY_PULSE 41 // F41 <09><><EFBFBD>嵱<EFBFBD><E5B5B1> PULSE
|
||||
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>ࣨF41-F50<35><30>
|
||||
#define STD_KEY_ALM_H 51 // F51 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ALM-H
|
||||
#define STD_KEY_ALM_L 52 // F52 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ALM-L
|
||||
#define STD_KEY_ALM_A 53 // F53 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ALM-A
|
||||
#define STD_KEY_ALM_T 54 // F54 ʱ<>䱨<EFBFBD><E4B1A8> ALM-T
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>ࣨF71-F90<39><30>
|
||||
#define STD_KEY_LORA_ADDR 71 // F71 LORA<52><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ LR-ID
|
||||
#define STD_KEY_LORA_ID 72 // F72 LORA<52>ϼ<EFBFBD><CFBC><EFBFBD>ַ NETID
|
||||
#define STD_KEY_LORA_CHAN 73 // F73 LORA<52>ŵ<EFBFBD> LR_CH
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>ࣨF91-F98<39><38>
|
||||
#define STD_KEY_PASS 91 // F91 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> PASS
|
||||
#define STD_KEY_CLR_A 92 // F92 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CLR-A
|
||||
#define STD_KEY_CLR_T 93 // F93 <09><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> CLR-T
|
||||
#define STD_KEY_RESET_DCOEF 94 // F94 <09>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> RS2ND
|
||||
|
||||
// <20>˳<EFBFBD>
|
||||
#define STD_KEY_QUIT 99 // F99 <09>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD> QUIT
|
||||
#define STD_RETURN 100 // <20>˳<EFBFBD><CBB3><EFBFBD><EFBFBD>̲<EFBFBD><CCB2><EFBFBD>
|
||||
|
||||
//******************************************************************************
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define MAX_SET_BIT 6
|
||||
#define LIST_PROMPT_BASE 9
|
||||
#define LIST_VALUE_BASE 9
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define FUN_PROMPT1 0
|
||||
#define FUN_PROMPT2 1
|
||||
#define FUN_PROMPT3 2
|
||||
#define FUN_PROMPT4 3
|
||||
#define FUN_PROMPT5 4
|
||||
#define FUN_DECIMAL 5 //
|
||||
|
||||
#define FUN_CODE_1 10
|
||||
#define FUN_CODE_2 11
|
||||
#define FUN_CODE_3 12
|
||||
#define FUN_CODE_4 13
|
||||
|
||||
//******************************************************************************
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>䶨<EFBFBD><E4B6A8>
|
||||
#define KEY_RESPONSE_TIME 1600 //300
|
||||
#define FLASH_500mS 3000 // for 125ms sampling interrupt //3000
|
||||
#define LONG_KEY_TIME (FLASH_500mS*5) //(FLASH_1S*3)
|
||||
#define COMM_KEY_TIME (FLASH_500mS*9) //(FLASH_1S*3)
|
||||
#define KEY_MAX_TIME 60000
|
||||
|
||||
#define KEY_HOLD_TIME 32768
|
||||
#define KEY_FREE_TIME 1600
|
||||
//******************************************************************************
|
||||
#define PARM_LIST_SEL 0x8000
|
||||
#define NO_SAVE 0x4000
|
||||
#define NEED_PASSWORD 0x2000
|
||||
#define NEED_DOT 0x1000
|
||||
#define OPERATION_CLASS 0x0800
|
||||
|
||||
#define FOUR_BIT 4
|
||||
//******************************************************************************
|
||||
#define DIS_SET_OFF 0
|
||||
#define DIS_PARA_INT 1
|
||||
#define DISPLAY_MENU 2
|
||||
#define FLASH_BIT 3
|
||||
#define NO_FLASH_BIT 4
|
||||
//******************************************************************************
|
||||
#define NEXT 2
|
||||
#define SAVE 1
|
||||
#define NO 0
|
||||
#define YES 1
|
||||
//******************************************************************************
|
||||
#define KEY_NOT_RESPONDING 0
|
||||
#define KEY_RESPONSE_INPUT 1
|
||||
#define KEY_IN_SETUP 2
|
||||
//******************************************************************************
|
||||
// for key setup pulse unit
|
||||
#define PULSE_0_1ML_INDEX 0
|
||||
#define PULSE_1ML_INDEX 1
|
||||
#define PULSE_10ML_INDEX 2
|
||||
#define PULSE_100ML_INDEX 3
|
||||
#define PULSE_1L_INDEX 4
|
||||
#define PULSE_10L_INDEX 5
|
||||
#define PULSE_100L_INDEX 6
|
||||
#define PULSE_1000L_INDEX 7
|
||||
|
||||
#define PULSE_MIN_UNIT PULSE_0_1ML
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user