update CV3 LSV CA code (ADC)
This commit is contained in:
+3
-27
@@ -11,32 +11,6 @@
|
||||
* Real current value : -15.00000 ~ 15.00000 mA
|
||||
* => user code = 1500000 mapping to 0.00000 mA
|
||||
*/
|
||||
|
||||
static uint16_t CCCurve(CCMode *CC){
|
||||
static uint16_t DACOutCode;
|
||||
static int32_t Vout;
|
||||
static int32_t DeltaVout;
|
||||
|
||||
if(DACReset){
|
||||
Vout = Vset;
|
||||
DACReset = false;
|
||||
}else{
|
||||
DeltaVout = Vset - (Vout);
|
||||
Vout = Vout + DeltaVout;
|
||||
}
|
||||
|
||||
INSTRUCTION.VoltConstant = Vout / 40000 + 25000; //5nV=>usercode
|
||||
DACOutCode = Usercode_Correction_to_DAC(INSTRUCTION.VoltConstant);
|
||||
DAC_outputV(DACOutCode);
|
||||
|
||||
int32_t RealV;
|
||||
RealV = (int32_t)(Vout / 200); //[5nV]
|
||||
InputNotify(NOTIFY_IMPEDANCE, RealV);
|
||||
|
||||
|
||||
return DACOutCode;
|
||||
}
|
||||
|
||||
static void CC_Plot(WorkMode *WorkModeData){
|
||||
switch (INSTRUCTION.eliteFxn) {
|
||||
case IT_CURVE:{
|
||||
@@ -93,7 +67,7 @@ static void CC_Plot(WorkMode *WorkModeData){
|
||||
|
||||
InputNotify(NOTIFY_CURRENT, CURRENT_MODE->_measureCurrent);
|
||||
|
||||
DACenable(WorkModeData, VoltData);
|
||||
DACenable(WorkModeData, VoltData, AFTER_READ_I);
|
||||
|
||||
ReadADCVolt(CURRENT_MODE->_VoViSwitch);
|
||||
ADCSwitch++;
|
||||
@@ -120,6 +94,8 @@ static void CC_Plot(WorkMode *WorkModeData){
|
||||
InputNotify(NOTIFY_VOLT, VoltData);
|
||||
}
|
||||
|
||||
DACenable(WorkModeData, VoltData, AFTER_READ_V);
|
||||
|
||||
ReadCurrent(spi_ADC_rxbuf);
|
||||
ADCSwitch++;
|
||||
}
|
||||
|
||||
+9
-9
@@ -41,9 +41,9 @@ static void CV3_Plot(CV3Mode *CV3){
|
||||
->_VoViSwitch : 0 read Vout volt
|
||||
|
||||
***********************************************/
|
||||
static uint8_t VoltCurrentSwitch = 0;
|
||||
static uint8_t ADCSwitch = 0;
|
||||
|
||||
if(VoltCurrentSwitch == 0){ /**read Iin(buffer),read Vin**/
|
||||
if(ADCSwitch == 0){ /**read Iin(buffer),read Vin**/
|
||||
// read current
|
||||
if(INSTRUCTION.AutoGainEnable){
|
||||
CV3->_measureCurrent = AutoGainReadCurrent(spi_ADC_rxbuf);
|
||||
@@ -62,9 +62,9 @@ static void CV3_Plot(CV3Mode *CV3){
|
||||
ReadVoutVolt(spi_ADC_rxbuf);
|
||||
}
|
||||
|
||||
VoltCurrentSwitch++;
|
||||
ADCSwitch++;
|
||||
}
|
||||
else if(VoltCurrentSwitch == 1){ /**read Vin**/
|
||||
else if(ADCSwitch == 1){ /**read Vin**/
|
||||
// read Volt
|
||||
if(CV3->_VoViSwitch == 0x01){
|
||||
ReadVolt(spi_ADC_rxbuf);
|
||||
@@ -72,9 +72,9 @@ static void CV3_Plot(CV3Mode *CV3){
|
||||
ReadVoutVolt(spi_ADC_rxbuf);
|
||||
}
|
||||
|
||||
VoltCurrentSwitch++;
|
||||
ADCSwitch++;
|
||||
}
|
||||
else if(VoltCurrentSwitch == 2){ /**read Vin(buffer),read Iin**/
|
||||
else if(ADCSwitch == 2){ /**read Vin(buffer),read Iin**/
|
||||
// read Volt
|
||||
if(CV3->_VoViSwitch == 0x01){
|
||||
ReadVolt(spi_ADC_rxbuf);// read vin volt
|
||||
@@ -89,13 +89,13 @@ static void CV3_Plot(CV3Mode *CV3){
|
||||
// read current
|
||||
ReadCurrent(spi_ADC_rxbuf);
|
||||
|
||||
VoltCurrentSwitch++;
|
||||
ADCSwitch++;
|
||||
}
|
||||
else if(VoltCurrentSwitch == 3){ /**read Iin**/
|
||||
else if(ADCSwitch == 3){ /**read Iin**/
|
||||
// read current
|
||||
ReadCurrent(spi_ADC_rxbuf);
|
||||
|
||||
VoltCurrentSwitch = 0;
|
||||
ADCSwitch = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+56
-29
@@ -27,37 +27,64 @@ static uint16_t VoltScan(WorkMode *WorkModeData) {
|
||||
return Voltage;
|
||||
}
|
||||
|
||||
static void DACenable(WorkMode *WorkModeData,int32_t VoltData){
|
||||
switch (INSTRUCTION.eliteFxn) {
|
||||
case IV_CURVE:
|
||||
case CV_CURVE:{
|
||||
OneWayVoltScan();
|
||||
break;
|
||||
static void DACenable(WorkMode *WorkModeData, int32_t VoltData ,uint8_t afterRead){
|
||||
if(afterRead == AFTER_READ_I){
|
||||
switch (INSTRUCTION.eliteFxn) {
|
||||
case IV_CURVE:
|
||||
case CV_CURVE:{
|
||||
break;
|
||||
}
|
||||
case ZT_CURVE:{
|
||||
// CalcuResistance(WorkModeData->RT, VoltData);
|
||||
break;
|
||||
}
|
||||
case CONSTANT_CURRENT:{
|
||||
CC_Vscan(WorkModeData->CC);
|
||||
OneWayVoltScan();
|
||||
break;
|
||||
}
|
||||
case IT_CURVE:
|
||||
case VT_CURVE:
|
||||
case CYCLIC_VOLTAMMETRY:
|
||||
case LINEAR_SWEEP_VOLTAMMETRY:
|
||||
case CONSTANT_VSCAN:{
|
||||
break;
|
||||
}
|
||||
default:{
|
||||
break;
|
||||
}
|
||||
}
|
||||
case ZT_CURVE:{
|
||||
CalcuResistance(WorkModeData->RT, VoltData);
|
||||
break;
|
||||
}
|
||||
case IT_CURVE:
|
||||
case VT_CURVE:{
|
||||
break;
|
||||
}
|
||||
case CONSTANT_CURRENT:{
|
||||
CC_Vscan(WorkModeData->CC);
|
||||
OneWayVoltScan();
|
||||
break;
|
||||
}
|
||||
case CYCLIC_VOLTAMMETRY:{
|
||||
break;
|
||||
}
|
||||
case LINEAR_SWEEP_VOLTAMMETRY:{
|
||||
break;
|
||||
}
|
||||
case CONSTANT_VSCAN:{
|
||||
break;
|
||||
}
|
||||
default:{
|
||||
}else if(afterRead == AFTER_READ_V){
|
||||
switch (INSTRUCTION.eliteFxn) {
|
||||
case IV_CURVE:
|
||||
case CV_CURVE:{
|
||||
OneWayVoltScan();
|
||||
break;
|
||||
}
|
||||
case ZT_CURVE:{
|
||||
CalcuResistance(WorkModeData->RT, VoltData);
|
||||
break;
|
||||
}
|
||||
case IT_CURVE:
|
||||
case VT_CURVE:
|
||||
case CONSTANT_CURRENT:{
|
||||
break;
|
||||
}
|
||||
case CYCLIC_VOLTAMMETRY:{
|
||||
CV3Curve(WorkModeData->CV3);
|
||||
break;
|
||||
}
|
||||
case LINEAR_SWEEP_VOLTAMMETRY:{
|
||||
LSVCurve(WorkModeData->LSV);
|
||||
break;
|
||||
}
|
||||
case CONSTANT_VSCAN:{
|
||||
CVSCANCurve(WorkModeData->CVSCAN);
|
||||
break;
|
||||
}
|
||||
default:{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+3
-1
@@ -64,7 +64,7 @@ static void ZT_Plot(WorkMode *WorkModeData) {
|
||||
|
||||
InputNotify(NOTIFY_CURRENT, CURRENT_MODE->_measureCurrent);
|
||||
|
||||
DACenable(WorkModeData, VoltData);
|
||||
DACenable(WorkModeData, VoltData, AFTER_READ_I);
|
||||
|
||||
ReadADCVolt(CURRENT_MODE->_VoViSwitch);
|
||||
ADCSwitch++;
|
||||
@@ -85,6 +85,8 @@ static void ZT_Plot(WorkMode *WorkModeData) {
|
||||
|
||||
InputNotify(NOTIFY_VOLT, VoltData);
|
||||
|
||||
DACenable(WorkModeData, VoltData, AFTER_READ_V);
|
||||
|
||||
ReadCurrent(spi_ADC_rxbuf);
|
||||
ADCSwitch++;
|
||||
}
|
||||
|
||||
+2
-2
@@ -5,8 +5,8 @@
|
||||
#define VERSION_DATE_YEAR 20
|
||||
#define VERSION_DATE_MONTH 7
|
||||
#define VERSION_DATE_DAY 10
|
||||
#define VERSION_DATE_HOUR 14
|
||||
#define VERSION_DATE_MINUTE 59
|
||||
#define VERSION_DATE_HOUR 16
|
||||
#define VERSION_DATE_MINUTE 7
|
||||
|
||||
// this is NOT the version hash !!
|
||||
// it's the last version hash
|
||||
|
||||
+3
-2
@@ -496,6 +496,8 @@ characteristic change event
|
||||
#define VMAX(v1,v2) ((v1 >= v2) ? v1 : v2)
|
||||
#define VMIN(v1,v2) ((v1 < v2) ? v1 : v2)
|
||||
#define VDIRECTION(v1,v2) ((v1 > v2) ? 0 : 1)
|
||||
#define AFTER_READ_I 0
|
||||
#define AFTER_READ_V 1
|
||||
#include "EliteWorkData.h"
|
||||
|
||||
/**
|
||||
@@ -654,10 +656,9 @@ static void CV3_Vscan(CV3Mode *CV3);
|
||||
static void CC_Vscan(CCMode *CC);
|
||||
|
||||
//mode (DAC)
|
||||
static void DACenable(WorkMode *WorkModeData,int32_t VoltData);
|
||||
static void DACenable(WorkMode *WorkModeData, int32_t VoltData, uint8_t afterRead);
|
||||
static uint16_t OneWayVoltScan();
|
||||
static void CalcuResistance(RTMode *RT, int32_t VoltData);
|
||||
static uint16_t CCCurve(CCMode *CC);
|
||||
static uint16_t CV3Curve(CV3Mode *CV3);
|
||||
static uint16_t LSVCurve(LSVMode *LSV);
|
||||
static uint16_t CVSCANCurve(CVSCANMode *CVSCAN);
|
||||
|
||||
+3
-6
@@ -239,18 +239,15 @@ static void EliteADCControl(WorkMode *WorkModeData) {
|
||||
break;
|
||||
}
|
||||
case CYCLIC_VOLTAMMETRY:{
|
||||
CV3_Plot(WorkModeData->CV3);
|
||||
CC_Plot(WorkModeData);
|
||||
break;
|
||||
}
|
||||
case LINEAR_SWEEP_VOLTAMMETRY:{
|
||||
if (INSTRUCTION.Ve1 == INSTRUCTION.Ve2) {
|
||||
PeriodicEvent = false;
|
||||
}
|
||||
LSV_Plot(WorkModeData->LSV);
|
||||
CC_Plot(WorkModeData);
|
||||
break;
|
||||
}
|
||||
case CONSTANT_VSCAN:{
|
||||
CVSCAN_Plot(WorkModeData->CVSCAN);
|
||||
CC_Plot(WorkModeData);
|
||||
break;
|
||||
}
|
||||
default:{
|
||||
|
||||
Reference in New Issue
Block a user