Merge remote-tracking branch 'origin/Elite_OBJ_Version' into Elite_OBJ_Version
This commit is contained in:
+31
-31
@@ -139,8 +139,8 @@ static uint16_t CVCurve(CVMode *CV) {
|
||||
|
||||
// reset origin volt at the begin
|
||||
if (DACReset) {
|
||||
DACUserCode = INSTRUCTION.VoltOrigin;
|
||||
if (INSTRUCTION.VoltFinal > INSTRUCTION.VoltOrigin) {
|
||||
DACUserCode = CV->GetVOrigin;
|
||||
if (INSTRUCTION.VoltFinal > CV->GetVOrigin) {
|
||||
direction_up = true;
|
||||
current_direction_up = true;
|
||||
} else {
|
||||
@@ -155,30 +155,30 @@ static uint16_t CVCurve(CVMode *CV) {
|
||||
return DACOutCode;
|
||||
}
|
||||
|
||||
if (StepTimeCounter == INSTRUCTION.StepTime) {
|
||||
if (StepTimeCounter == CV->GetStepTime) {
|
||||
|
||||
// Decide next direction
|
||||
if (direction_up) {
|
||||
if (DACUserCode >= INSTRUCTION.VoltFinal) {
|
||||
if (DACUserCode >= CV->GetVStop ) {
|
||||
current_direction_up = false; // problem occurs when origin == 0000 final == ffff!!!!!!
|
||||
} else if (DACUserCode <= INSTRUCTION.VoltOrigin) {
|
||||
} else if (DACUserCode <= CV->GetVOrigin) {
|
||||
current_direction_up = true;
|
||||
if (INSTRUCTION.CycleNumber == 0) {
|
||||
if (CV->GetCycleNumber == 0) {
|
||||
PeriodicEvent = false; // periodic event end
|
||||
DACReset = true;
|
||||
}
|
||||
INSTRUCTION.CycleNumber--;
|
||||
CV->_CycleNumber--;
|
||||
}
|
||||
} else {
|
||||
if (DACUserCode <= INSTRUCTION.VoltFinal) {
|
||||
if (DACUserCode <= CV->GetVStop) {
|
||||
current_direction_up = true; // problem occurs when origin == 0000 final == ffff!!!!!!
|
||||
} else if (DACUserCode >= INSTRUCTION.VoltOrigin) {
|
||||
} else if (DACUserCode >= CV->GetVOrigin) {
|
||||
current_direction_up = false;
|
||||
if (INSTRUCTION.CycleNumber == 0) {
|
||||
if (CV->GetCycleNumber == 0) {
|
||||
PeriodicEvent = false; // periodic event end
|
||||
DACReset = true;
|
||||
}
|
||||
INSTRUCTION.CycleNumber--;
|
||||
CV->_CycleNumber--;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -186,52 +186,52 @@ static uint16_t CVCurve(CVMode *CV) {
|
||||
if (direction_up) {
|
||||
if (current_direction_up) {
|
||||
// DACUserCode overflow ?
|
||||
if (DACUserCode + INSTRUCTION.Step < DACUserCode) {
|
||||
DACUserCode = INSTRUCTION.VoltFinal;
|
||||
if (DACUserCode + CV->GetStep < DACUserCode) {
|
||||
DACUserCode = CV->GetVStop;
|
||||
}
|
||||
else if (DACUserCode + INSTRUCTION.Step > INSTRUCTION.VoltFinal) {
|
||||
DACUserCode = INSTRUCTION.VoltFinal;
|
||||
else if (DACUserCode + CV->GetStep > CV->GetVStop) {
|
||||
DACUserCode =CV->GetVStop;
|
||||
}
|
||||
else {
|
||||
DACUserCode = DACUserCode + INSTRUCTION.Step;
|
||||
DACUserCode = DACUserCode + CV->GetStep;
|
||||
}
|
||||
}
|
||||
else {
|
||||
// DACUserCode underflow ?
|
||||
if (DACUserCode - INSTRUCTION.Step > DACUserCode || DACUserCode > 60000) {
|
||||
DACUserCode = INSTRUCTION.VoltOrigin;
|
||||
if (DACUserCode - CV->GetStep > DACUserCode || DACUserCode > 60000) {
|
||||
DACUserCode = CV->GetVOrigin;
|
||||
}
|
||||
|
||||
// reach Vorigin ?
|
||||
else if (DACUserCode - INSTRUCTION.Step < INSTRUCTION.VoltOrigin) {
|
||||
DACUserCode = INSTRUCTION.VoltOrigin;
|
||||
else if (DACUserCode - CV->GetStep < CV->GetVOrigin) {
|
||||
DACUserCode = CV->GetVOrigin;
|
||||
}
|
||||
else {
|
||||
DACUserCode = DACUserCode - INSTRUCTION.Step;
|
||||
DACUserCode = DACUserCode - CV->GetStep;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (current_direction_up) {
|
||||
if (DACUserCode + INSTRUCTION.Step < DACUserCode) {
|
||||
DACUserCode = INSTRUCTION.VoltOrigin;
|
||||
if (DACUserCode + CV->GetStep < DACUserCode) {
|
||||
DACUserCode = CV->GetVOrigin;
|
||||
}
|
||||
else if (DACUserCode + INSTRUCTION.Step > INSTRUCTION.VoltOrigin) {
|
||||
DACUserCode = INSTRUCTION.VoltOrigin;
|
||||
else if (DACUserCode + CV->GetStep > CV->GetVOrigin) {
|
||||
DACUserCode = CV->GetVOrigin;
|
||||
}
|
||||
else {
|
||||
DACUserCode = DACUserCode + INSTRUCTION.Step;
|
||||
DACUserCode = DACUserCode + CV->GetStep;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (DACUserCode - INSTRUCTION.Step > DACUserCode || DACUserCode > 60000) {
|
||||
DACUserCode = INSTRUCTION.VoltFinal;
|
||||
if (DACUserCode - CV->GetStep > DACUserCode || DACUserCode > 60000) {
|
||||
DACUserCode = CV->GetVStop ;
|
||||
}
|
||||
else if (DACUserCode - INSTRUCTION.Step < INSTRUCTION.VoltFinal) {
|
||||
DACUserCode = INSTRUCTION.VoltFinal;
|
||||
else if (DACUserCode - CV->GetStep < CV->GetVStop) {
|
||||
DACUserCode = CV->GetVStop;
|
||||
}
|
||||
else {
|
||||
DACUserCode = DACUserCode - INSTRUCTION.Step;
|
||||
DACUserCode = DACUserCode - CV->GetStep;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+9
-9
@@ -27,10 +27,10 @@ static uint16_t VoltScan(WorkMode *WorkModeData) {
|
||||
|
||||
static uint16_t OneWayVoltScan(IVMode *IV) {
|
||||
static uint16_t DACOutCode;
|
||||
|
||||
|
||||
// reset origin volt at the begin
|
||||
if (DACReset) {
|
||||
DACUserCode = INSTRUCTION.VoltOrigin;
|
||||
DACUserCode = IV->GetVOrigin;
|
||||
DACOutCode = Usercode_Correction_to_DAC(DACUserCode);
|
||||
DACReset = false;
|
||||
|
||||
@@ -39,26 +39,26 @@ static uint16_t OneWayVoltScan(IVMode *IV) {
|
||||
return DACOutCode;
|
||||
}
|
||||
|
||||
if (StepTimeCounter == INSTRUCTION.StepTime) {
|
||||
if (INSTRUCTION.VoltOrigin < INSTRUCTION.VoltFinal) {
|
||||
if (StepTimeCounter == IV->GetStepTime) {
|
||||
if (IV->GetVOrigin < IV->GetVStop) {
|
||||
// output the next output volt
|
||||
DACUserCode = DACUserCode + INSTRUCTION.Step;
|
||||
DACUserCode = DACUserCode + IV->GetStep ;
|
||||
DACOutCode = Usercode_Correction_to_DAC(DACUserCode);
|
||||
DAC_outputV(DACOutCode);
|
||||
|
||||
// end IV task if we reach INSTRUCTION.VoltFinal
|
||||
if (DACUserCode >= INSTRUCTION.VoltFinal) {
|
||||
if (DACUserCode >= IV->GetVStop) {
|
||||
PeriodicEvent = false;
|
||||
DACReset = true;
|
||||
}
|
||||
} else {
|
||||
|
||||
DACUserCode = DACUserCode - INSTRUCTION.Step;
|
||||
DACUserCode = DACUserCode - IV->GetStep;
|
||||
|
||||
// check if DACUserCode underflow
|
||||
if(DACUserCode >= 60000){
|
||||
// LED_color(DARKLED, 0xFF, 0x00, 0x00);
|
||||
DACUserCode = INSTRUCTION.VoltFinal;
|
||||
DACUserCode = IV->GetVStop;
|
||||
}
|
||||
|
||||
// int32_t DACUC = DACUserCode;
|
||||
@@ -72,7 +72,7 @@ static uint16_t OneWayVoltScan(IVMode *IV) {
|
||||
DAC_outputV(DACOutCode);
|
||||
|
||||
// end IV task if we reach INSTRUCTION.VoltFinal
|
||||
if (DACUserCode <= INSTRUCTION.VoltFinal) {
|
||||
if (DACUserCode <= IV->GetVStop) {
|
||||
PeriodicEvent = false;
|
||||
DACReset = true;
|
||||
}
|
||||
|
||||
+10
-10
@@ -206,7 +206,7 @@ typedef struct _VoltOutMode{
|
||||
|
||||
static VoltOutMode *InitVoltOutMode(){
|
||||
VoltOutMode *ret = malloc(sizeof(VoltOutMode));
|
||||
ret->_VoltOut = 25000; // 25000 is DAC_ZERO
|
||||
ret->_VoltOut = INSTRUCTION.VoltConstant; // 25000 is DAC_ZERO
|
||||
ret->_VOrigin = 25000;
|
||||
ret->_VStop = 25000;
|
||||
ret->_Step = 0;
|
||||
@@ -246,10 +246,10 @@ static IVMode *InitIVMode(){
|
||||
ret->GetMeasureData = &_GetMeasureData;
|
||||
|
||||
ret->_VoltOut = 25000; // 25000 is DAC_ZERO
|
||||
ret->_VOrigin = 25000;
|
||||
ret->_VStop = 25000;
|
||||
ret->_Step = 0;
|
||||
ret->_StepTime = 10000; // STEPTIME_ONE_SEC
|
||||
ret->_VOrigin = INSTRUCTION.VoltOrigin;
|
||||
ret->_VStop = INSTRUCTION.VoltFinal;
|
||||
ret->_Step = INSTRUCTION.Step;
|
||||
ret->_StepTime = INSTRUCTION.StepTime; // STEPTIME_ONE_SEC
|
||||
ret->_CycleNumber = 1;
|
||||
|
||||
ret->SetVoltOut = &_SetVoltOut;
|
||||
@@ -321,11 +321,11 @@ static CVMode * InitCVMode(){
|
||||
ret->GetMeasureData = &_GetMeasureData;
|
||||
|
||||
ret->_VoltOut = 25000; // 25000 is DAC_ZERO
|
||||
ret->_VOrigin = 25000;
|
||||
ret->_VStop = 25000;
|
||||
ret->_Step = 0;
|
||||
ret->_StepTime = 10000; // STEPTIME_ONE_SEC
|
||||
ret->_CycleNumber = 1;
|
||||
ret->_VOrigin = INSTRUCTION.VoltOrigin;
|
||||
ret->_VStop = INSTRUCTION.VoltFinal;
|
||||
ret->_Step = INSTRUCTION.Step;
|
||||
ret->_StepTime = INSTRUCTION.StepTime; // STEPTIME_ONE_SEC
|
||||
ret->_CycleNumber = INSTRUCTION.CycleNumber;
|
||||
|
||||
ret->SetVoltOut = &_SetVoltOut;
|
||||
ret->GetVoltOut = &_GetVoltOut;
|
||||
|
||||
Reference in New Issue
Block a user