CC MDOE error fix

This commit is contained in:
YiChin
2019-10-02 11:31:39 +08:00
parent 6a833aabee
commit 9d73fab37e
2 changed files with 16 additions and 20 deletions
@@ -27,7 +27,7 @@ typedef struct _CURRENT_USER_CODE {
uint16_t value;
/** Measure Current **/
int32_t MeasureCurrent;
int32_t _MeasureCurrent;
/** transform a current user code (IUC) to real current in pA **/
// handle current lv 0~2
@@ -69,9 +69,9 @@ static int32_t CCModeReadCurrent(CURRENT_USER_CODE *CurrentUserCode){
// decode ADC value and put it into notify buffer
Real_Current = DecodeADCValue(INSTRUCTION.ADCGainLevel, ADC_CH_CURRENT, spi_ADC_rxbuf);
Real_Current = 8787877;
CurrentUserCode->MeasureCurrent = Real_Current;
CurrentUserCode->SetMeasureCurrent(CurrentUserCode, Real_Current);
return Real_Current;
}
@@ -83,20 +83,17 @@ static int32_t CCModeVoltOut(CURRENT_USER_CODE *CurrentUserCode){
return 0;
}
if(CurrentUserCode->MeasureCurrent == 8787877){
LED_color(DARKLED, 0x0F, 0x00, 0xFF);
MeasureCurrent = CurrentUserCode->GetMeasureCurrent(CurrentUserCode);
if(CurrentUserCode->lv != CURRENT_LV_FOUR && CurrentUserCode->lv != CURRENT_LV_THREE ){
if(CurrentUserCode->_Transform2RealpA > MeasureCurrent){
LED_color(DARKLED, 0x0F, 0x00, 0xFF);
}
else{
LED_color(DARKLED, 0xFF, 0x00, 0x0F);
}
}
MeasureCurrent = CurrentUserCode->MeasureCurrent;
NotifyCurrent[0] = (uint8_t) (MeasureCurrent >> 24);
NotifyCurrent[1] = (uint8_t) ((MeasureCurrent & 0x00FF0000) >> 16);
NotifyCurrent[2] = (uint8_t) ((MeasureCurrent & 0x0000FF00) >> 8);
NotifyCurrent[3] = (uint8_t) (MeasureCurrent & 0x000000FF);
NotifyVolt[0] = (uint8_t) (MeasureCurrent >> 24);
NotifyVolt[1] = (uint8_t) ((MeasureCurrent & 0x00FF0000) >> 16);
NotifyVolt[2] = (uint8_t) ((MeasureCurrent & 0x0000FF00) >> 8);
NotifyVolt[3] = (uint8_t) (MeasureCurrent & 0x000000FF);
// INSTRUCTION.VoltConstant = 24999 + 500;
// DAC_outputV(Usercode_Correction_to_DAC(INSTRUCTION.VoltConstant));
@@ -288,12 +285,12 @@ static uint8_t CompareCurrent(CURRENT_USER_CODE *self, uint8_t unit, int32_t val
}
}
static void SetMeasureCurrent(CURRENT_USER_CODE *self, int32_t current){
self->MeasureCurrent = current;
self->_MeasureCurrent = current;
}
static int32_t GetMeasureCurrent(CURRENT_USER_CODE *self){
int32_t ret;
ret = self->MeasureCurrent;
ret = self->_MeasureCurrent;
return ret;
}
@@ -301,7 +298,7 @@ static CURRENT_USER_CODE *InitCurrentUserCode(){
CURRENT_USER_CODE *CurrentUserCode = malloc(sizeof(CURRENT_USER_CODE));
CurrentUserCode->lv = 0;
CurrentUserCode->value = 0;
CurrentUserCode-> MeasureCurrent = 0;
CurrentUserCode-> _MeasureCurrent = 0;
CurrentUserCode->_Transform2RealnA = &_Transform2RealnA;
CurrentUserCode->_Transform2RealpA = &_Transform2RealpA;
CurrentUserCode->SetMeasureCurrent = &SetMeasureCurrent;
@@ -112,7 +112,7 @@ static void SimpleBLEPeripheral_performPeriodicTask(CURRENT_USER_CODE *CurrentUs
// In IV, CV, and func-gen mode, DAC will output voltage
// else DAC do nothing.
EliteDACControl();
EliteDACControl(CurrentUserCode);
// Control ADC to sample rate
EliteADCControl(CurrentUserCode);
@@ -172,7 +172,6 @@ static void EliteADCControl(CURRENT_USER_CODE *CurrentUserCode) {
}
case CONSTANT_CURRENT:{
CCModeReadCurrent(CurrentUserCode);
break;
}
default:{