From 9d73fab37ea2ee2401da5be73cfd5d365dfc9496 Mon Sep 17 00:00:00 2001 From: YiChin Date: Wed, 2 Oct 2019 11:31:39 +0800 Subject: [PATCH] CC MDOE error fix --- .../cc26xx/app/headstage/EliteCCMode.h | 33 +++++++++---------- .../cc26xx/app/headstage/impedance_meter.h | 3 +- 2 files changed, 16 insertions(+), 20 deletions(-) diff --git a/simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/cc26xx/app/headstage/EliteCCMode.h b/simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/cc26xx/app/headstage/EliteCCMode.h index 4826d88bf..9cdc81210 100644 --- a/simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/cc26xx/app/headstage/EliteCCMode.h +++ b/simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/cc26xx/app/headstage/EliteCCMode.h @@ -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; diff --git a/simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/cc26xx/app/headstage/impedance_meter.h b/simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/cc26xx/app/headstage/impedance_meter.h index 65b25627e..ce3d2254a 100644 --- a/simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/cc26xx/app/headstage/impedance_meter.h +++ b/simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/cc26xx/app/headstage/impedance_meter.h @@ -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:{