Version 3.0: Switching to newer LDC1614 which is placed on the same PCB.

Dependencies:   Bob DS1825 LDC1614 LDC1101 SDFileSystem mbed

Fork of Inductive_Sensor by Bob Giesberts

Committer:
bobgiesberts
Date:
Sat Jan 16 09:14:21 2016 +0000
Revision:
5:736a81a59f3c
Parent:
4:ae441c5727b9
Child:
6:ff39d60061ca
Power management: take samples for INTERVAL_ON seconds, then go to deepsleep for INTERVAL_OFF seconds. ; There is still a very stupid error with the SDFileSystem. writing to SD does not work properly. After power is cut from SD, it can not be awoken..

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bobgiesberts 0:e81b68888268 1 #include "mbed.h"
bobgiesberts 0:e81b68888268 2 #include "LDC1101.h"
bobgiesberts 1:22c272515015 3 #include "SDFileSystem.h"
bobgiesberts 2:1a203732fc95 4 #include "Bob.h"
bobgiesberts 0:e81b68888268 5 #include <iostream>
bobgiesberts 5:736a81a59f3c 6 #include <vector>
bobgiesberts 4:ae441c5727b9 7 #include <string>
bobgiesberts 0:e81b68888268 8 using namespace std;
bobgiesberts 0:e81b68888268 9
bobgiesberts 2:1a203732fc95 10 /**
bobgiesberts 2:1a203732fc95 11 * @file main.cpp
bobgiesberts 2:1a203732fc95 12 * @brief This file programs the processor for the inductive force sensor
bobgiesberts 2:1a203732fc95 13 * using the library LDC1101.h and LDC1101.cpp.
bobgiesberts 2:1a203732fc95 14 * - Red Led: processing communication with LDC1101
bobgiesberts 2:1a203732fc95 15 * - Green Led: processing SD card
bobgiesberts 4:ae441c5727b9 16 *
bobgiesberts 4:ae441c5727b9 17 * Log protocol:
bobgiesberts 4:ae441c5727b9 18 * - 1 minute at 20 Hz
bobgiesberts 4:ae441c5727b9 19 * - 29 minutes rest
bobgiesberts 2:1a203732fc95 20 *
bobgiesberts 2:1a203732fc95 21 * @author Bob Giesberts
bobgiesberts 2:1a203732fc95 22 *
bobgiesberts 2:1a203732fc95 23 * @date 2015-12-17
bobgiesberts 2:1a203732fc95 24 */
bobgiesberts 0:e81b68888268 25
bobgiesberts 5:736a81a59f3c 26 // SETTINGS
bobgiesberts 5:736a81a59f3c 27 bool DEBUG_MODE = false;
bobgiesberts 5:736a81a59f3c 28 float C = 120E-12; // pF
bobgiesberts 5:736a81a59f3c 29 int INTERVAL_ON = 2; // 30 = 30 sec
bobgiesberts 5:736a81a59f3c 30 int INTERVAL_OFF = 2; // 1770 = 29*60+30 sec
bobgiesberts 0:e81b68888268 31
bobgiesberts 5:736a81a59f3c 32 // load libraries
bobgiesberts 5:736a81a59f3c 33 Bob bob(PTB0, PTB1, PTC3, PTE0, PTC2, PTE30); // red led, green led, sd_enable, sd_present, batt, 3V3_DET
bobgiesberts 5:736a81a59f3c 34 Serial pc(USBTX, USBRX);
bobgiesberts 4:ae441c5727b9 35
bobgiesberts 4:ae441c5727b9 36 // timer variables
bobgiesberts 4:ae441c5727b9 37 clock_t t;
bobgiesberts 5:736a81a59f3c 38 uint32_t t_new = 0, t_old = 0; // real time in PEE modus (48 MHz)
bobgiesberts 4:ae441c5727b9 39 int t_high = 0;
bobgiesberts 5:736a81a59f3c 40 uint32_t t_lost_new = 0, t_lost_old = 0; // lost time in BLPI modus (16 kHz)
bobgiesberts 5:736a81a59f3c 41 int t_lost_high = 0;
bobgiesberts 5:736a81a59f3c 42 float seconds = (float) 2.0 * INTERVAL_ON;
bobgiesberts 5:736a81a59f3c 43 float t_period = 0;
bobgiesberts 4:ae441c5727b9 44
bobgiesberts 4:ae441c5727b9 45 // file variables
bobgiesberts 4:ae441c5727b9 46 FILE *fp;
bobgiesberts 4:ae441c5727b9 47 string filename = "/sd/data00.txt";
bobgiesberts 4:ae441c5727b9 48 const char *fn;
bobgiesberts 4:ae441c5727b9 49
bobgiesberts 5:736a81a59f3c 50 // temporal storage for data samples
bobgiesberts 5:736a81a59f3c 51 vector < float > secvector;
bobgiesberts 5:736a81a59f3c 52 vector < uint32_t > Lvector;
bobgiesberts 5:736a81a59f3c 53 float batt;
bobgiesberts 5:736a81a59f3c 54
bobgiesberts 0:e81b68888268 55 int main(void){
bobgiesberts 5:736a81a59f3c 56
bobgiesberts 5:736a81a59f3c 57
bobgiesberts 5:736a81a59f3c 58
bobgiesberts 2:1a203732fc95 59 /** --- Connection to LDC1101 --- */
bobgiesberts 2:1a203732fc95 60 pc.printf("Connect to LDC1101...");
bobgiesberts 5:736a81a59f3c 61 LDC1101* ldc = new LDC1101(PTC6, PTC7, PTC5, PTC4, C, 16E6);
bobgiesberts 2:1a203732fc95 62 pc.printf("success!\r\n");
bobgiesberts 5:736a81a59f3c 63 bob.flash(1);
bobgiesberts 0:e81b68888268 64
bobgiesberts 2:1a203732fc95 65 /** --- Connection to sensor --- */
bobgiesberts 2:1a203732fc95 66 pc.printf("Connect to sensor...");
bobgiesberts 5:736a81a59f3c 67 while( !ldc->is_New_LHR_data() ){
bobgiesberts 5:736a81a59f3c 68 pc.printf(".");
bobgiesberts 5:736a81a59f3c 69 }
bobgiesberts 5:736a81a59f3c 70 // while( ldc.get_LHR_Data() == 0 ) { pc.printf(":"); bob.wakeup(); } // sometimes this gives an error! TODO: fix the error!
bobgiesberts 5:736a81a59f3c 71 if( ldc->get_LHR_Data() != 16777215 ) {
bobgiesberts 5:736a81a59f3c 72 pc.printf(" success!\r\n");
bobgiesberts 5:736a81a59f3c 73 bob.flash_red(1);
bobgiesberts 2:1a203732fc95 74 }else{
bobgiesberts 5:736a81a59f3c 75 pc.printf(" failed!\r\n");
bobgiesberts 2:1a203732fc95 76 bob.red();
bobgiesberts 2:1a203732fc95 77 }
bobgiesberts 5:736a81a59f3c 78
bobgiesberts 2:1a203732fc95 79
bobgiesberts 5:736a81a59f3c 80 /**********************************/
bobgiesberts 5:736a81a59f3c 81 /*********** DEBUG MODUS **********/
bobgiesberts 5:736a81a59f3c 82 /**********************************/
bobgiesberts 5:736a81a59f3c 83 if( DEBUG_MODE )
bobgiesberts 5:736a81a59f3c 84 {
bobgiesberts 5:736a81a59f3c 85 while(1)
bobgiesberts 5:736a81a59f3c 86 {
bobgiesberts 5:736a81a59f3c 87 if( ldc->is_Oscillation_Error() ){
bobgiesberts 5:736a81a59f3c 88 pc.printf("Oscillation Error! \r\n");
bobgiesberts 5:736a81a59f3c 89
bobgiesberts 5:736a81a59f3c 90 }else{
bobgiesberts 5:736a81a59f3c 91 while( !ldc->is_New_LHR_data() ) {
bobgiesberts 5:736a81a59f3c 92 // pc.printf(".");
bobgiesberts 5:736a81a59f3c 93 }
bobgiesberts 5:736a81a59f3c 94 pc.printf("LHR_Data: %d, battery: %.4f\r\n", ldc->get_LHR_Data(), bob.battery());
bobgiesberts 5:736a81a59f3c 95 }
bobgiesberts 5:736a81a59f3c 96 wait( 0.1 );
bobgiesberts 5:736a81a59f3c 97 }
bobgiesberts 5:736a81a59f3c 98 }
bobgiesberts 5:736a81a59f3c 99 /**********************************/
bobgiesberts 5:736a81a59f3c 100 /**********************************/
bobgiesberts 5:736a81a59f3c 101
bobgiesberts 5:736a81a59f3c 102
bobgiesberts 5:736a81a59f3c 103 /** --- Connection to SD card --- */
bobgiesberts 2:1a203732fc95 104 pc.printf("Connect to SD card...");
bobgiesberts 5:736a81a59f3c 105 while( bob.checkSD() != 1 ) { pc.printf("."); bob.green(); bob.wakeup(); }
bobgiesberts 5:736a81a59f3c 106 pc.printf("success!\r\n");
bobgiesberts 5:736a81a59f3c 107 bob.flash_green(1);
bobgiesberts 5:736a81a59f3c 108
bobgiesberts 2:1a203732fc95 109 // Load SD File system
bobgiesberts 5:736a81a59f3c 110 // SDFileSystem SD(PTD6, PTD7, PTD5, PTD4, "sd"); // mosi, miso, sclk, cs, sd_name
bobgiesberts 5:736a81a59f3c 111 SDFileSystem* sd = new SDFileSystem(PTD6, PTD7, PTD5, PTD4, "sd");
bobgiesberts 5:736a81a59f3c 112
bobgiesberts 4:ae441c5727b9 113 // Create a new data file
bobgiesberts 4:ae441c5727b9 114 pc.printf("Creating data file...");
bobgiesberts 4:ae441c5727b9 115 mkdir("/sd", 0777);
bobgiesberts 4:ae441c5727b9 116 for(uint8_t i = 0; i < 100; i++) {
bobgiesberts 4:ae441c5727b9 117 filename[8] = i/10 + '0'; // arrays count from 0 so the number is 16 and 17
bobgiesberts 4:ae441c5727b9 118 filename[9] = i%10 + '0';
bobgiesberts 4:ae441c5727b9 119 fp = fopen( filename.c_str() , "r" );
bobgiesberts 4:ae441c5727b9 120 if( fp == NULL ) { // read failed so file does not exist
bobgiesberts 4:ae441c5727b9 121 fp = fopen( filename.c_str(), "w" ); // create it
bobgiesberts 4:ae441c5727b9 122 if( fp != NULL ){
bobgiesberts 4:ae441c5727b9 123 fn = filename.c_str();
bobgiesberts 4:ae441c5727b9 124 pc.printf("success! Filename: %s\r\n", fn);
bobgiesberts 4:ae441c5727b9 125 break;
bobgiesberts 4:ae441c5727b9 126 }else{
bobgiesberts 4:ae441c5727b9 127 pc.printf("failed!\r\n");
bobgiesberts 4:ae441c5727b9 128 }
bobgiesberts 4:ae441c5727b9 129 }else{ // file already exists
bobgiesberts 4:ae441c5727b9 130 fclose( fp );
bobgiesberts 4:ae441c5727b9 131 }
bobgiesberts 1:22c272515015 132 }
bobgiesberts 2:1a203732fc95 133
bobgiesberts 2:1a203732fc95 134 // Write current settings to data file
bobgiesberts 4:ae441c5727b9 135 fp = fopen( fn, "w" );
bobgiesberts 5:736a81a59f3c 136 fprintf(fp, "DIVIDER : %d\r\n", ldc->get_divider());
bobgiesberts 5:736a81a59f3c 137 fprintf(fp, "RESPONSETIME : %d\r\n", ldc->get_responsetime());
bobgiesberts 5:736a81a59f3c 138 fprintf(fp, "RP_MIN : %.2f\r\n", ldc->get_RPmin());
bobgiesberts 5:736a81a59f3c 139 fprintf(fp, "LHR_RCOUNT : %d\r\n", ldc->get_Rcount());
bobgiesberts 5:736a81a59f3c 140 fprintf(fp, "C : %f\r\n", C);
bobgiesberts 2:1a203732fc95 141 fprintf(fp, "\r\n\r\n");
bobgiesberts 4:ae441c5727b9 142 fclose(fp);
bobgiesberts 4:ae441c5727b9 143
bobgiesberts 5:736a81a59f3c 144 delete ldc;
bobgiesberts 5:736a81a59f3c 145 delete sd;
bobgiesberts 5:736a81a59f3c 146
bobgiesberts 5:736a81a59f3c 147
bobgiesberts 4:ae441c5727b9 148 // initialise timer
bobgiesberts 4:ae441c5727b9 149 t = clock();
bobgiesberts 4:ae441c5727b9 150 t_new = (uint32_t) t;
bobgiesberts 4:ae441c5727b9 151
bobgiesberts 5:736a81a59f3c 152
bobgiesberts 5:736a81a59f3c 153
bobgiesberts 5:736a81a59f3c 154 // Take samples for a period of INTERVAL_ON sec, then shut down everything and
bobgiesberts 5:736a81a59f3c 155 // sleep for a period of INTERVAL_OFF seconds.
bobgiesberts 0:e81b68888268 156 while(1)
bobgiesberts 4:ae441c5727b9 157 {
bobgiesberts 5:736a81a59f3c 158
bobgiesberts 5:736a81a59f3c 159 // wake up.
bobgiesberts 5:736a81a59f3c 160 pc.printf("waking up!\r\n\r\n");
bobgiesberts 5:736a81a59f3c 161
bobgiesberts 5:736a81a59f3c 162 bob.wakeup(); // SD + Sensor on
bobgiesberts 5:736a81a59f3c 163
bobgiesberts 5:736a81a59f3c 164 pc.printf("Connect to SD card...");
bobgiesberts 5:736a81a59f3c 165 while( bob.checkSD() != 1 ) { pc.printf("."); bob.green(); bob.wakeup(); }
bobgiesberts 5:736a81a59f3c 166 pc.printf("success!\r\n");
bobgiesberts 5:736a81a59f3c 167 bob.greenoff();
bobgiesberts 5:736a81a59f3c 168
bobgiesberts 5:736a81a59f3c 169 // connection to LDC1101
bobgiesberts 5:736a81a59f3c 170 pc.printf("Connect to LDC1101...");
bobgiesberts 5:736a81a59f3c 171 LDC1101* ldc = new LDC1101(PTC6, PTC7, PTC5, PTC4, C, 16E6);
bobgiesberts 5:736a81a59f3c 172 pc.printf("succes!\r\n");
bobgiesberts 1:22c272515015 173
bobgiesberts 5:736a81a59f3c 174 // SD-card
bobgiesberts 5:736a81a59f3c 175 // BIG FAT ERROR RIGHT HERE!!!
bobgiesberts 5:736a81a59f3c 176 // //
bobgiesberts 5:736a81a59f3c 177 // //
bobgiesberts 5:736a81a59f3c 178 // SDFileSystem gives an //
bobgiesberts 5:736a81a59f3c 179 // error: after power off //
bobgiesberts 5:736a81a59f3c 180 // everything seems wrong //
bobgiesberts 5:736a81a59f3c 181 // //
bobgiesberts 5:736a81a59f3c 182 // //
bobgiesberts 5:736a81a59f3c 183 // BIG FAT ERROR RIGHT HERE!!!
bobgiesberts 5:736a81a59f3c 184 // SDFileSystem* sd = new SDFileSystem(PTD6, PTD7, PTD5, PTD4, "sd");
bobgiesberts 5:736a81a59f3c 185 // mkdir("/sd", 0777);
bobgiesberts 5:736a81a59f3c 186 // fp = fopen(fn, "a");
bobgiesberts 5:736a81a59f3c 187 pc.printf("Let's begin\r\n\r\n");
bobgiesberts 5:736a81a59f3c 188 // fprintf(fp, "Let's begin\r\n\r\n");
bobgiesberts 5:736a81a59f3c 189 // fclose(fp);
bobgiesberts 5:736a81a59f3c 190
bobgiesberts 5:736a81a59f3c 191
bobgiesberts 5:736a81a59f3c 192
bobgiesberts 5:736a81a59f3c 193 // Add lost time to the counter
bobgiesberts 5:736a81a59f3c 194 t_lost_old = t_lost_new;
bobgiesberts 5:736a81a59f3c 195 t_lost_new += (INTERVAL_OFF);
bobgiesberts 5:736a81a59f3c 196 t_period = seconds + INTERVAL_OFF;
bobgiesberts 5:736a81a59f3c 197
bobgiesberts 5:736a81a59f3c 198 while( seconds < t_period + INTERVAL_ON )
bobgiesberts 5:736a81a59f3c 199 {
bobgiesberts 5:736a81a59f3c 200
bobgiesberts 4:ae441c5727b9 201 // Set the timer
bobgiesberts 4:ae441c5727b9 202 t_old = t_new;
bobgiesberts 4:ae441c5727b9 203 t = clock();
bobgiesberts 4:ae441c5727b9 204 t_new = (uint32_t) t;
bobgiesberts 5:736a81a59f3c 205 if( t_new < t_old ) t_high++; // uint32_t <clock_t> overflows at 2^32 = 4294.967296 sec = 71 min
bobgiesberts 5:736a81a59f3c 206 if( t_lost_new < t_lost_old ) t_lost_high++; // uint32_t <t_lost_new> overflows at 2^32 = 4294.967296 sec = 71 min
bobgiesberts 2:1a203732fc95 207
bobgiesberts 5:736a81a59f3c 208 seconds = ((float) t_new/100.0) + 4294.967296*(float)t_high + t_lost_new + 4294.967296*(float)t_lost_high;
bobgiesberts 2:1a203732fc95 209
bobgiesberts 5:736a81a59f3c 210 // check if sensor is not overloaded
bobgiesberts 5:736a81a59f3c 211 if(ldc->is_Oscillation_Error()){
bobgiesberts 5:736a81a59f3c 212 // Error: sensor overloaded
bobgiesberts 5:736a81a59f3c 213
bobgiesberts 5:736a81a59f3c 214 }else{
bobgiesberts 5:736a81a59f3c 215 // wait until the next value is ready, this takes about 0.2 s?
bobgiesberts 5:736a81a59f3c 216 while(!ldc->is_New_LHR_data()) {
bobgiesberts 5:736a81a59f3c 217 // pc.printf(".");
bobgiesberts 5:736a81a59f3c 218 bob.red();
bobgiesberts 5:736a81a59f3c 219 }
bobgiesberts 5:736a81a59f3c 220 bob.redoff();
bobgiesberts 5:736a81a59f3c 221
bobgiesberts 5:736a81a59f3c 222 // get the sensor value
bobgiesberts 5:736a81a59f3c 223 int L = ldc->get_LHR_Data();
bobgiesberts 5:736a81a59f3c 224
bobgiesberts 5:736a81a59f3c 225 // if the sensor is connected
bobgiesberts 5:736a81a59f3c 226 if( L != 0 && L != 16777215 ) {
bobgiesberts 4:ae441c5727b9 227
bobgiesberts 5:736a81a59f3c 228 bob.green();
bobgiesberts 5:736a81a59f3c 229
bobgiesberts 5:736a81a59f3c 230 // store sample data in RAM / flash memory
bobgiesberts 5:736a81a59f3c 231 secvector.push_back( seconds );
bobgiesberts 5:736a81a59f3c 232 Lvector.push_back( L );
bobgiesberts 4:ae441c5727b9 233
bobgiesberts 5:736a81a59f3c 234 // RAM reaches memory limit when vector size = 64
bobgiesberts 5:736a81a59f3c 235 // 64 * 32bit * 2 = 512 bytes | KL25Z: 128 kb flash + 16 kb RAM
bobgiesberts 5:736a81a59f3c 236 if( Lvector.size() > 31 )
bobgiesberts 5:736a81a59f3c 237 {
bobgiesberts 5:736a81a59f3c 238 // If SD-carddetect fails, try to wake it up setting enable to 1 and wait
bobgiesberts 5:736a81a59f3c 239 while( bob.checkSD() != 1 ) { pc.printf("."); bob.green(); bob.wakeup(); }
bobgiesberts 5:736a81a59f3c 240
bobgiesberts 5:736a81a59f3c 241 if( bob.checkSD() == 1 )
bobgiesberts 5:736a81a59f3c 242 {
bobgiesberts 5:736a81a59f3c 243 // no need to have accurate timestamp for battery level, just one sample for this period
bobgiesberts 5:736a81a59f3c 244 batt = bob.battery();
bobgiesberts 5:736a81a59f3c 245
bobgiesberts 5:736a81a59f3c 246 bob.red();
bobgiesberts 5:736a81a59f3c 247
bobgiesberts 5:736a81a59f3c 248 // BIG FAT ERROR RIGHT HERE!!!
bobgiesberts 5:736a81a59f3c 249 // //
bobgiesberts 5:736a81a59f3c 250 // //
bobgiesberts 5:736a81a59f3c 251 // fopen gives a stupid //
bobgiesberts 5:736a81a59f3c 252 // error //
bobgiesberts 5:736a81a59f3c 253 // //
bobgiesberts 5:736a81a59f3c 254 // //
bobgiesberts 5:736a81a59f3c 255 // //
bobgiesberts 5:736a81a59f3c 256 // BIG FAT ERROR RIGHT HERE!!!
bobgiesberts 5:736a81a59f3c 257
bobgiesberts 5:736a81a59f3c 258 /* debugging...
bobgiesberts 5:736a81a59f3c 259 fp = fopen( fn, "r" );
bobgiesberts 5:736a81a59f3c 260 if(fp == NULL)
bobgiesberts 5:736a81a59f3c 261 {
bobgiesberts 5:736a81a59f3c 262 pc.printf("r werkt niet \r\n;");
bobgiesberts 5:736a81a59f3c 263 }else{
bobgiesberts 5:736a81a59f3c 264 pc.printf("r werkt\r\n;");
bobgiesberts 5:736a81a59f3c 265 }
bobgiesberts 5:736a81a59f3c 266 fclose(fp);
bobgiesberts 5:736a81a59f3c 267 wait (0.5);
bobgiesberts 5:736a81a59f3c 268 */
bobgiesberts 5:736a81a59f3c 269
bobgiesberts 5:736a81a59f3c 270 pc.printf("Write RAM memory to SD card...");
bobgiesberts 5:736a81a59f3c 271 // fp = fopen( fn, "a" );
bobgiesberts 5:736a81a59f3c 272 // for(uint8_t i = 0; i < Lvector.size(); i++)
bobgiesberts 5:736a81a59f3c 273 // {
bobgiesberts 5:736a81a59f3c 274 // fprintf( fp, "%.2f;%d;%.6f\r\n", secvector.at(i), Lvector.at(i), batt );
bobgiesberts 5:736a81a59f3c 275 // }
bobgiesberts 5:736a81a59f3c 276 // fclose(fp);
bobgiesberts 5:736a81a59f3c 277 pc.printf("success!\r\n");
bobgiesberts 5:736a81a59f3c 278 bob.redoff();
bobgiesberts 5:736a81a59f3c 279
bobgiesberts 5:736a81a59f3c 280 secvector.clear();
bobgiesberts 5:736a81a59f3c 281 Lvector.clear();
bobgiesberts 5:736a81a59f3c 282 }
bobgiesberts 5:736a81a59f3c 283 }
bobgiesberts 5:736a81a59f3c 284
bobgiesberts 5:736a81a59f3c 285 pc.printf( "[%d]: %.2f;%d;%.6f\r\n", secvector.size(), seconds, L, bob.battery() );
bobgiesberts 5:736a81a59f3c 286
bobgiesberts 5:736a81a59f3c 287 bob.greenoff();
bobgiesberts 5:736a81a59f3c 288
bobgiesberts 5:736a81a59f3c 289
bobgiesberts 4:ae441c5727b9 290 }
bobgiesberts 5:736a81a59f3c 291
bobgiesberts 2:1a203732fc95 292 }
bobgiesberts 5:736a81a59f3c 293
bobgiesberts 2:1a203732fc95 294 }
bobgiesberts 5:736a81a59f3c 295
bobgiesberts 5:736a81a59f3c 296 // store remaining data before going to sleep
bobgiesberts 5:736a81a59f3c 297 if( bob.checkSD() == 1 && Lvector.size() != 0)
bobgiesberts 5:736a81a59f3c 298 {
bobgiesberts 5:736a81a59f3c 299 // no need to have accurate timestamp for battery level, just one sample for this period
bobgiesberts 5:736a81a59f3c 300 batt = bob.battery();
bobgiesberts 5:736a81a59f3c 301
bobgiesberts 5:736a81a59f3c 302 bob.red();
bobgiesberts 5:736a81a59f3c 303 pc.printf("Write RAM memory to SD card...");
bobgiesberts 5:736a81a59f3c 304 // fp = fopen( fn, "a" );
bobgiesberts 5:736a81a59f3c 305 // for(uint8_t i = 0; i < Lvector.size(); i++)
bobgiesberts 5:736a81a59f3c 306 // fprintf( fp, "%.2f;%d;%.6f\r\n", secvector[i], Lvector[i], batt );
bobgiesberts 5:736a81a59f3c 307 // fclose(fp);
bobgiesberts 5:736a81a59f3c 308 pc.printf("succes!\r\n");
bobgiesberts 5:736a81a59f3c 309 bob.redoff();
bobgiesberts 5:736a81a59f3c 310
bobgiesberts 5:736a81a59f3c 311 }
bobgiesberts 5:736a81a59f3c 312 secvector.clear();
bobgiesberts 5:736a81a59f3c 313 Lvector.clear();
bobgiesberts 5:736a81a59f3c 314
bobgiesberts 1:22c272515015 315
bobgiesberts 5:736a81a59f3c 316
bobgiesberts 5:736a81a59f3c 317 // After measuring for a period of INTERVAL_ON seconds, wait for INTERVAL_OFF minutes
bobgiesberts 5:736a81a59f3c 318 // While waiting, put everything in lowest power modus
bobgiesberts 5:736a81a59f3c 319 pc.printf("zzz...\r\n\r\n");
bobgiesberts 5:736a81a59f3c 320
bobgiesberts 5:736a81a59f3c 321
bobgiesberts 2:1a203732fc95 322
bobgiesberts 5:736a81a59f3c 323 // SD-card: Kill SPI to SD card
bobgiesberts 5:736a81a59f3c 324 delete sd;
bobgiesberts 5:736a81a59f3c 325 DigitalOut sdP2(PTD4); sdP2 = 0; // cs
bobgiesberts 5:736a81a59f3c 326 DigitalOut sdP3(PTD6); sdP3 = 0; // mosi
bobgiesberts 5:736a81a59f3c 327 DigitalOut sdP5(PTD5); sdP5 = 0; // sck
bobgiesberts 5:736a81a59f3c 328 DigitalOut sdP7(PTD7); sdP7 = 0; // miso
bobgiesberts 5:736a81a59f3c 329
bobgiesberts 5:736a81a59f3c 330 // LDC in SHUTDOWN mode
bobgiesberts 5:736a81a59f3c 331 ldc->sleep();
bobgiesberts 5:736a81a59f3c 332
bobgiesberts 5:736a81a59f3c 333 // Sensor: Kill SPI to sensor
bobgiesberts 5:736a81a59f3c 334 DigitalOut senP2(PTC7); senP2 = 0; // miso
bobgiesberts 5:736a81a59f3c 335 DigitalOut senP3(PTC5); senP3 = 0; // sck
bobgiesberts 5:736a81a59f3c 336 DigitalOut senP4(PTC6); senP4 = 0; // mosi
bobgiesberts 5:736a81a59f3c 337 DigitalOut senP5(PTC4); senP5 = 0; // cs
bobgiesberts 5:736a81a59f3c 338
bobgiesberts 5:736a81a59f3c 339 // Power off SD + Sensor, KL25Z in deepsleep mode
bobgiesberts 5:736a81a59f3c 340 bob.sleep( INTERVAL_OFF );
bobgiesberts 5:736a81a59f3c 341
bobgiesberts 5:736a81a59f3c 342 // RESULTS
bobgiesberts 5:736a81a59f3c 343 // 0.101 mA (zonder sensor, zonder SD)
bobgiesberts 5:736a81a59f3c 344 // 1.300 mA (zonder sensor, met SD)
bobgiesberts 5:736a81a59f3c 345 // 2.574 mA (met sensor, zonder SD)
bobgiesberts 5:736a81a59f3c 346 // 3.185 mA (met sensor, met SD)
bobgiesberts 0:e81b68888268 347 }
bobgiesberts 5:736a81a59f3c 348
bobgiesberts 0:e81b68888268 349 }