ADC logging with demo drive board for calibration

Dependencies:   mbed MODSERIAL FastPWM ADS8568_ADC

Revision:
11:8e6c8e654004
Parent:
10:a64434365090
Child:
12:3f1df385d781
--- a/main.cpp	Fri Jun 28 08:23:36 2019 +0000
+++ b/main.cpp	Fri Jun 28 08:45:27 2019 +0000
@@ -7,6 +7,7 @@
 #define MEAS_DELAY     1000 // measurement delay after turning on FET (us) (themocycling control programme uses 50 us)
 #define LOG_INTERVAL   5000  // log file interval (ms)
 
+#define N_STEPS = 250
 #define CAM_TRIG            20     // camera trigger pulse width (us)
 
 Serial pc(USBTX, USBRX); // tx, rx
@@ -22,18 +23,22 @@
 AnalogIn auxVolt(p20);
 
 BusOut convt(p11, p12, p13, p14);
-SPI spi(p5, p6, p7); // mosi, miso, sclk
-DigitalOut cs(p8);  //chip select
+SPI spi(p5, p6, p7);              // mosi, miso, sclk
+DigitalOut cs(p8);                // chip select
 DigitalIn busy(p9);
 DigitalOut reset(p10);
+DigitalIn userButton(p16);
+Timer timer;
+LocalFileSystem local("local");
 
+FILE *fp = fopen("/local/TEST_LOG.csv", "w");  // Open "test_log" on the local file system for writing
+
+char outString[100];
 char buffer16[16];
 int val_array[8];
 const char dummy = 0;
 int drivetime_ms = 1;
 
-char outString[100];
-
 int readChannels (char buffer[16], int values[8]){
     //simultaneously samples and reads into buffer
     short int val_array[8];
@@ -59,7 +64,8 @@
     
 
 int main() {
-    int n_samples = 20;
+    int eTime;
+    int iCycle;
     double r1;
     double r2;
     double r1_max = 0;
@@ -103,10 +109,16 @@
     yLED = 0;
     gLED = 1;
     
-    sprintf(outString, "I1SIG,  IREF, V1POS, V1NEG,      R1,    I2SIG,  IREF, V2POS, V2NEG,         R2\r\n");
-    pc.printf("%s", outString);
+    sprintf(outString, "iCycle, eTime, R1, R2 \n");
+    //sprintf(outString, "I1SIG,  IREF, V1POS, V1NEG,      R1,    I2SIG,  IREF, V2POS, V2NEG,         R2\r\n");
+    //pc.printf("%s", outString);
+    fprintf(fp, outString);
     
-    for (int x=0; x<n_samples; x++) {
+    while ( x < N_STEPS );
+        
+        eTime = timer.read_ms();
+        iCycle = x;
+        
         // trigger measurement
         drive = 1;
         yLED = 1;
@@ -131,21 +143,23 @@
         r2_sum = r2_sum + r2;
         r2_sum2 = r2_sum2 + (r2*r2);
 
-        sprintf(outString, "%5d\t %5d\t %5d\t %5d\t %f  %5d\t %5d\t %5d\t %5d\t %f\r\n", val_array[0], val_array[1], val_array[4], val_array[5], r1, val_array[2], val_array[1], val_array[6], val_array[7], r2);
-        pc.printf("%s", outString); 
+        sprintf(outString, "%10d,%10d,%10f,%10f\n", iCycle, eTime, r1, r2); // log data
+        //sprintf(outString, "%5d\t %5d\t %5d\t %5d\t %f  %5d\t %5d\t %5d\t %5d\t %f\r\n", val_array[0], val_array[1], val_array[4], val_array[5], r1, val_array[2], val_array[1], val_array[6], val_array[7], r2);
+        //pc.printf("%s", outString); 
+        fprintf(fp, outString);
         wait_ms(LOG_INTERVAL);
-        
+        x++;
         }
 
-    r1_mean = r1_sum/n_samples;
-    r1_mean2 = r1_sum2/n_samples;
-    r1_sd = sqrt(r1_mean2-(r1_mean*r1_mean));
-    r1_cv = r1_sd/r1_mean;
+    //r1_mean = r1_sum/n_samples;
+    //r1_mean2 = r1_sum2/n_samples;
+    //r1_sd = sqrt(r1_mean2-(r1_mean*r1_mean));
+    //r1_cv = r1_sd/r1_mean;
 
-    r2_mean = r2_sum/n_samples;
-    r2_mean2 = r2_sum2/n_samples;
-    r2_sd = sqrt(r2_mean2-(r2_mean*r2_mean));
-    r2_cv = r2_sd/r1_mean;
+    //r2_mean = r2_sum/n_samples;
+    //r2_mean2 = r2_sum2/n_samples;
+    //r2_sd = sqrt(r2_mean2-(r2_mean*r2_mean));
+    //r2_cv = r2_sd/r1_mean;
 
     //pc.printf("Statistics:\r\n"); 
     //pc.printf("n_samples : %d\r\n", n_samples); 
@@ -162,5 +176,6 @@
     //.printf("r2_cv      : %f\r\n", r2_cv);  
 
     rLED = 0;
+    fclose(fp);
     
  }