From c3b633a207b4a6af16fd39c5bb1f01a35bd3e6b5 Mon Sep 17 00:00:00 2001 From: 105042004 Date: Tue, 6 Aug 2019 13:20:51 +0800 Subject: [PATCH] test CV curve --- .../cc26xx/app/headstage/impedance_meter.h | 51 +++++++++++++++++-- 1 file changed, 47 insertions(+), 4 deletions(-) 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 3e07c8d43..7d25dcf19 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 @@ -604,7 +604,7 @@ static void DPVCurve(){ return; } -static void CVCurve(){ +static void CVCurve_tmp(){ static uint8_t ramp0; static uint8_t ramp1; static int16_t outputV = VoltOrigin; @@ -635,7 +635,6 @@ static void CVCurve(){ // check if we reach the final volt - /* if ( ramp >= VoltFinal) { Step = !Step; // reverse the Step direction } @@ -665,8 +664,52 @@ static void CVCurve(){ } ramp0 = ramp0 - Step; - */ - if((outputV == VoltFinal) || (outputV == VoltFinal) ) Step = !Step; + +} + +static void CVCurve(){ + static uint8_t ramp0; + static uint8_t ramp1; + static int16_t outputV = VoltOrigin; + static bool first_cycle = true; + uint16_t ramp = 0; + float VoltValue; + + // reset origin volt at the begin + if (DACreset){ + if(!PeriodicEvent) PeriodicEvent = true; + ramp0 = (uint8_t) (VoltOrigin & 0x00FF); //right byte + ramp1 = (uint8_t) ((VoltOrigin>>8) & 0x00FF); //left byte + DACreset = false; + + } + + // output a certain volt + ramp = ( (uint16_t) (ramp1)<<8 ) | ( (uint16_t) (ramp0) ); + + DAC_outputV(outputV); + + // record the output voltage + int32_t Vout = 0; + int16_t decode = (int16_t)(ramp1 << 8) | (uint16_t)(ramp0); //ramp1 ramp0 + VoltValue = decode * (-2.9780379) + 5920.324416; + Vout = (int32_t) (VoltValue / 1); + // VoltValue = (ramp1*16 + ramp0/16) * 3.05; + + + if ( ramp >= VoltFinal) { + Step = !Step; // reverse the Step direction + } + else if (ramp <= VoltOrigin) { + Step = !Step; + if (INSTRUCTION.CycleNumber == 0) { + PeriodicEvent = false; //periodic event end + first_cycle = true; + DACreset = true; + return; + } + INSTRUCTION.CycleNumber--; + } outputV = outputV + Step;