WIZwiki W7500 ADC Performance Meter

Dependencies:   SDFileSystem STATIC_COLORS WIZnetInterface mbed

Fork of WIZwiki-W7500_ADC_Sampling by FOURNET Olivier

/media/uploads/Fo170/wizwiki-w7500_adc_performancemeter.png

Committer:
Fo170
Date:
Sun Jul 10 15:23:53 2016 +0000
Revision:
4:9b3e3c52778a
Parent:
3:cc86b144837b
WIZwiki W7500 ADC Performance Meter

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Fo170 0:70a1e939250e 1 #include "mbed.h"
Fo170 0:70a1e939250e 2 #include "EthernetInterface.h"
Fo170 0:70a1e939250e 3 #include "SDFileSystem.h"
Fo170 0:70a1e939250e 4 #include <stdio.h>
Fo170 0:70a1e939250e 5 #include <string.h>
Fo170 0:70a1e939250e 6
Fo170 4:9b3e3c52778a 7 // https://developer.mbed.org/users/chris/notebook/Getting-best-ADC-performance/
Fo170 4:9b3e3c52778a 8 // https://developer.mbed.org/users/chris/code/ADCPerformanceMeter/
Fo170 0:70a1e939250e 9
Fo170 0:70a1e939250e 10 #if defined(TARGET_WIZwiki_W7500)
Fo170 0:70a1e939250e 11 Serial uart(USBTX, USBRX);
Fo170 0:70a1e939250e 12 SDFileSystem sd(PB_3, PB_2, PB_1, PB_0, "sd"); // WIZwiki-W7500
Fo170 0:70a1e939250e 13 #include "static_colors.h"
Fo170 0:70a1e939250e 14 // LED RED : server listning status
Fo170 0:70a1e939250e 15 // LED GREEN : socket connecting status Ok
Fo170 0:70a1e939250e 16 // LED BLUE : socket connecting status Busy
Fo170 0:70a1e939250e 17 #endif
Fo170 0:70a1e939250e 18
Fo170 4:9b3e3c52778a 19 #define HTTPD_MAX_FNAME_LENGTH 127
Fo170 4:9b3e3c52778a 20 #define HTTPD_MAX_DNAME_LENGTH 127
Fo170 0:70a1e939250e 21
Fo170 0:70a1e939250e 22 char fileName[HTTPD_MAX_FNAME_LENGTH+1];
Fo170 0:70a1e939250e 23 char dirName[HTTPD_MAX_DNAME_LENGTH+1];
Fo170 0:70a1e939250e 24 char *uristr;
Fo170 0:70a1e939250e 25 char *eou;
Fo170 0:70a1e939250e 26 char *qrystr;
Fo170 0:70a1e939250e 27
Fo170 0:70a1e939250e 28 FILE *fp;
Fo170 0:70a1e939250e 29 int rdCnt;
Fo170 0:70a1e939250e 30
Fo170 0:70a1e939250e 31 // Initialize a pins to perform analog input and digital output fucntions
Fo170 0:70a1e939250e 32 AnalogIn ain0(A0);
Fo170 0:70a1e939250e 33
Fo170 4:9b3e3c52778a 34 #define NUM_SAMPLES 500000 // size of sample series
Fo170 4:9b3e3c52778a 35 #define SAMPLE_BLOCKS 5
Fo170 2:86f52ca432b8 36
Fo170 4:9b3e3c52778a 37 Timer t;
Fo170 0:70a1e939250e 38
Fo170 0:70a1e939250e 39 Ticker ledTick;
Fo170 0:70a1e939250e 40
Fo170 0:70a1e939250e 41 char *pch;
Fo170 0:70a1e939250e 42 char ext[5];
Fo170 4:9b3e3c52778a 43
Fo170 0:70a1e939250e 44 int pos_ext;
Fo170 0:70a1e939250e 45 int extLen;
Fo170 0:70a1e939250e 46
Fo170 4:9b3e3c52778a 47 //---------------------------
Fo170 4:9b3e3c52778a 48 int samples = 0;
Fo170 4:9b3e3c52778a 49 int num_4 = 0;
Fo170 4:9b3e3c52778a 50 int num_8 = 0;
Fo170 4:9b3e3c52778a 51 int num_16 = 0;
Fo170 4:9b3e3c52778a 52 int num_32 = 0;
Fo170 4:9b3e3c52778a 53 int num_64 = 0;
Fo170 4:9b3e3c52778a 54 int num_128 = 0;
Fo170 4:9b3e3c52778a 55 int num_256 = 0;
Fo170 4:9b3e3c52778a 56 int num_512 = 0;
Fo170 4:9b3e3c52778a 57 int num_1024 = 0;
Fo170 4:9b3e3c52778a 58 int num_spike = 0;
Fo170 4:9b3e3c52778a 59
Fo170 4:9b3e3c52778a 60 float AVERAGE = 0.5;
Fo170 4:9b3e3c52778a 61 float AVERAGE_MOY = 0.5;
Fo170 4:9b3e3c52778a 62 float average_min = 0.0;
Fo170 4:9b3e3c52778a 63 float average_max = 3.3;
Fo170 4:9b3e3c52778a 64 float average_error = 3.0303; // Par défaut : 3.0303% sur la valeur centrale 1.65V
Fo170 2:86f52ca432b8 65
Fo170 4:9b3e3c52778a 66 #define __AVERAGE_AUTO__ 1
Fo170 4:9b3e3c52778a 67
Fo170 4:9b3e3c52778a 68 void PerformanceMeter(void)
Fo170 0:70a1e939250e 69 {
Fo170 4:9b3e3c52778a 70 float r = 0.0;
Fo170 4:9b3e3c52778a 71 //---------------------------------
Fo170 4:9b3e3c52778a 72 // Take the average over 500,000 samples
Fo170 4:9b3e3c52778a 73 // This is because the bias to 1.65v has a tolerance
Fo170 4:9b3e3c52778a 74 // adjust the analog input to 1.65V, if NO AUTO MODE
Fo170 4:9b3e3c52778a 75
Fo170 4:9b3e3c52778a 76 uart.printf("Taking an average over %d samples\r\n",NUM_SAMPLES);
Fo170 4:9b3e3c52778a 77
Fo170 4:9b3e3c52778a 78 if( __AVERAGE_AUTO__ )
Fo170 4:9b3e3c52778a 79 {
Fo170 4:9b3e3c52778a 80 COLOR(_BLUE_);
Fo170 4:9b3e3c52778a 81 samples = 0;
Fo170 4:9b3e3c52778a 82 average_error = 5.0; // 5% initiale
Fo170 4:9b3e3c52778a 83 uart.printf("AVERAGE AUTO : error %f%%\r\n", average_error);
Fo170 4:9b3e3c52778a 84
Fo170 4:9b3e3c52778a 85 while(samples < NUM_SAMPLES)
Fo170 4:9b3e3c52778a 86 {
Fo170 4:9b3e3c52778a 87 r = ain0.read();
Fo170 4:9b3e3c52778a 88
Fo170 4:9b3e3c52778a 89 AVERAGE_MOY += r;
Fo170 4:9b3e3c52778a 90 samples++;
Fo170 4:9b3e3c52778a 91 }
Fo170 4:9b3e3c52778a 92
Fo170 4:9b3e3c52778a 93 AVERAGE_MOY /= NUM_SAMPLES;
Fo170 4:9b3e3c52778a 94 average_min = AVERAGE_MOY - (AVERAGE_MOY * average_error / 100.0);
Fo170 4:9b3e3c52778a 95 average_max = AVERAGE_MOY + (AVERAGE_MOY * average_error / 100.0);
Fo170 4:9b3e3c52778a 96 uart.printf("Average Moyenne (for 5%%) = %f , Min = %f , Max = %f\r\n",3.3 * AVERAGE, 3.3 * average_min, 3.3 * average_max);
Fo170 4:9b3e3c52778a 97 samples = 0;
Fo170 4:9b3e3c52778a 98
Fo170 4:9b3e3c52778a 99 while(samples < NUM_SAMPLES)
Fo170 4:9b3e3c52778a 100 {
Fo170 4:9b3e3c52778a 101 r = ain0.read();
Fo170 4:9b3e3c52778a 102
Fo170 4:9b3e3c52778a 103 if((r > average_min) && (r < average_max))
Fo170 4:9b3e3c52778a 104 {
Fo170 4:9b3e3c52778a 105 AVERAGE += r;
Fo170 4:9b3e3c52778a 106 samples++;
Fo170 4:9b3e3c52778a 107 }
Fo170 4:9b3e3c52778a 108 }
Fo170 4:9b3e3c52778a 109
Fo170 4:9b3e3c52778a 110 AVERAGE /= NUM_SAMPLES;
Fo170 4:9b3e3c52778a 111 average_min = AVERAGE - (AVERAGE * average_error / 100.0);
Fo170 4:9b3e3c52778a 112 average_max = AVERAGE + (AVERAGE * average_error / 100.0);
Fo170 4:9b3e3c52778a 113 uart.printf("Average (for 5%%) = %f , Min = %f , Max = %f\r\n",3.3 * AVERAGE, 3.3 * average_min, 3.3 * average_max);
Fo170 4:9b3e3c52778a 114 // étalonage à 1% --------------------
Fo170 4:9b3e3c52778a 115 average_error = 1.0; // 1%
Fo170 4:9b3e3c52778a 116 COLOR(_YELLOW_);
Fo170 4:9b3e3c52778a 117 samples = 0;
Fo170 4:9b3e3c52778a 118
Fo170 4:9b3e3c52778a 119 while(samples < NUM_SAMPLES)
Fo170 0:70a1e939250e 120 {
Fo170 4:9b3e3c52778a 121 r = ain0.read();
Fo170 4:9b3e3c52778a 122
Fo170 4:9b3e3c52778a 123 if((r > average_min) && (r < average_max))
Fo170 4:9b3e3c52778a 124 {
Fo170 4:9b3e3c52778a 125 AVERAGE += r;
Fo170 4:9b3e3c52778a 126 samples++;
Fo170 4:9b3e3c52778a 127 }
Fo170 0:70a1e939250e 128 }
Fo170 0:70a1e939250e 129
Fo170 4:9b3e3c52778a 130 AVERAGE /= NUM_SAMPLES;
Fo170 4:9b3e3c52778a 131 average_min = AVERAGE - (AVERAGE * average_error / 100.0);
Fo170 4:9b3e3c52778a 132 average_max = AVERAGE + (AVERAGE * average_error / 100.0);
Fo170 4:9b3e3c52778a 133 uart.printf("Average (for 1%%) = %f , Min = %f , Max = %f\r\n",3.3 * AVERAGE, 3.3 * average_min, 3.3 * average_max);
Fo170 4:9b3e3c52778a 134 }
Fo170 4:9b3e3c52778a 135 else
Fo170 4:9b3e3c52778a 136 {
Fo170 4:9b3e3c52778a 137 COLOR(_PURPLE_);
Fo170 4:9b3e3c52778a 138 average_min = 1.65 - (1.65 * average_error / 100.0); // 0.45 --> -3,0303% of 1.65V --> 1.485V
Fo170 4:9b3e3c52778a 139 average_max = 1.65 + (1.65 * average_error / 100.0); // 0.55 --> +3,0303% of 1.65V --> 1.815V
Fo170 4:9b3e3c52778a 140 samples = 0;
Fo170 4:9b3e3c52778a 141
Fo170 4:9b3e3c52778a 142 while(samples < NUM_SAMPLES)
Fo170 4:9b3e3c52778a 143 {
Fo170 4:9b3e3c52778a 144 r = ain0.read();
Fo170 4:9b3e3c52778a 145
Fo170 4:9b3e3c52778a 146 if((r > average_min) && (r < average_max)) // 0.7425V à 0.9075
Fo170 4:9b3e3c52778a 147 {
Fo170 4:9b3e3c52778a 148 AVERAGE += r;
Fo170 4:9b3e3c52778a 149 samples++;
Fo170 4:9b3e3c52778a 150 }
Fo170 4:9b3e3c52778a 151 }
Fo170 4:9b3e3c52778a 152
Fo170 4:9b3e3c52778a 153 AVERAGE /= NUM_SAMPLES;
Fo170 4:9b3e3c52778a 154 uart.printf("Average = %f , Min = %f , Max = %f\r\n",3.3 * AVERAGE, 3.3 * average_min, 3.3 * average_max);
Fo170 4:9b3e3c52778a 155 }
Fo170 4:9b3e3c52778a 156
Fo170 4:9b3e3c52778a 157 samples = 0;
Fo170 4:9b3e3c52778a 158
Fo170 4:9b3e3c52778a 159 // Now start sampling series of 500,000
Fo170 4:9b3e3c52778a 160 // acculumating the errors seen in each range
Fo170 4:9b3e3c52778a 161 uart.printf("Profiling %d samples\r\n",SAMPLE_BLOCKS*NUM_SAMPLES);
Fo170 4:9b3e3c52778a 162 float a;
Fo170 0:70a1e939250e 163
Fo170 4:9b3e3c52778a 164 for(int j=0; j < SAMPLE_BLOCKS ; j++)
Fo170 4:9b3e3c52778a 165 {
Fo170 4:9b3e3c52778a 166 t.reset();
Fo170 4:9b3e3c52778a 167 t.start();
Fo170 4:9b3e3c52778a 168 COLOR(_WHITE_);
Fo170 4:9b3e3c52778a 169 //uart.printf("%d SAMPLE BLOCKS\r\n",j);
Fo170 4:9b3e3c52778a 170
Fo170 4:9b3e3c52778a 171 for(int i = 0; i < NUM_SAMPLES ; i++)
Fo170 4:9b3e3c52778a 172 {
Fo170 4:9b3e3c52778a 173 a = ain0.read();
Fo170 4:9b3e3c52778a 174
Fo170 4:9b3e3c52778a 175 if(a == 1.0) {
Fo170 4:9b3e3c52778a 176 num_spike++; // > 2048 lsb
Fo170 4:9b3e3c52778a 177 } else if (a > (AVERAGE + 0.2500)) {
Fo170 4:9b3e3c52778a 178 num_1024++; // > 1024 lsb
Fo170 4:9b3e3c52778a 179 } else if (a > (AVERAGE + 0.0625)) {
Fo170 4:9b3e3c52778a 180 num_512++; // > 512 lsb
Fo170 4:9b3e3c52778a 181 } else if (a > (AVERAGE + 0.0312)) {
Fo170 4:9b3e3c52778a 182 num_256++; // > 256 lsb
Fo170 4:9b3e3c52778a 183 } else if (a > (AVERAGE + 0.0312)) {
Fo170 4:9b3e3c52778a 184 num_128++; // > 128 lsb
Fo170 4:9b3e3c52778a 185 } else if (a > (AVERAGE + 0.0156)) {
Fo170 4:9b3e3c52778a 186 num_64++; // > 64 lsb
Fo170 4:9b3e3c52778a 187 } else if (a > (AVERAGE + 0.0078)) {
Fo170 4:9b3e3c52778a 188 num_32++; // > 32 lsb
Fo170 4:9b3e3c52778a 189 } else if (a > (AVERAGE + 0.0039)) {
Fo170 4:9b3e3c52778a 190 num_16++; // > 16 lsb
Fo170 4:9b3e3c52778a 191 } else if (a > (AVERAGE + 0.0019)) {
Fo170 4:9b3e3c52778a 192 num_8++; // > 8 lsb
Fo170 4:9b3e3c52778a 193 } else if (a > (AVERAGE + 0.0009)) {
Fo170 4:9b3e3c52778a 194 num_4++; // > 8 lsb
Fo170 4:9b3e3c52778a 195 }
Fo170 4:9b3e3c52778a 196
Fo170 4:9b3e3c52778a 197 samples++;
Fo170 4:9b3e3c52778a 198 }
Fo170 4:9b3e3c52778a 199 t.stop();
Fo170 4:9b3e3c52778a 200 COLOR(_BLACK_);
Fo170 4:9b3e3c52778a 201 if(j==0)
Fo170 4:9b3e3c52778a 202 {
Fo170 4:9b3e3c52778a 203 uart.printf("Samples\t");
Fo170 4:9b3e3c52778a 204 uart.printf("4\t");
Fo170 4:9b3e3c52778a 205 uart.printf("8\t");
Fo170 4:9b3e3c52778a 206 uart.printf("16\t");
Fo170 4:9b3e3c52778a 207 uart.printf("32\t");
Fo170 4:9b3e3c52778a 208 uart.printf("64\t");
Fo170 4:9b3e3c52778a 209 uart.printf("128\t");
Fo170 4:9b3e3c52778a 210 uart.printf("256\t");
Fo170 4:9b3e3c52778a 211 uart.printf("512\t");
Fo170 4:9b3e3c52778a 212 uart.printf("1024\t");
Fo170 4:9b3e3c52778a 213 uart.printf("Spikes\t");
Fo170 4:9b3e3c52778a 214 uart.printf("Time\r\n");
Fo170 4:9b3e3c52778a 215 }
Fo170 4:9b3e3c52778a 216
Fo170 4:9b3e3c52778a 217 // Every 500,000 print the results
Fo170 4:9b3e3c52778a 218 uart.printf("%d\t",samples);
Fo170 4:9b3e3c52778a 219 uart.printf("%d\t",num_4);
Fo170 4:9b3e3c52778a 220 uart.printf("%d\t",num_8);
Fo170 4:9b3e3c52778a 221 uart.printf("%d\t",num_16);
Fo170 4:9b3e3c52778a 222 uart.printf("%d\t",num_32);
Fo170 4:9b3e3c52778a 223 uart.printf("%d\t",num_64);
Fo170 4:9b3e3c52778a 224 uart.printf("%d\t",num_128);
Fo170 4:9b3e3c52778a 225 uart.printf("%d\t",num_256);
Fo170 4:9b3e3c52778a 226 uart.printf("%d\t",num_512);
Fo170 4:9b3e3c52778a 227 uart.printf("%d\t",num_1024);
Fo170 4:9b3e3c52778a 228 uart.printf("%d\t",num_spike);
Fo170 4:9b3e3c52778a 229 uart.printf("%fs\r\n",t.read());
Fo170 4:9b3e3c52778a 230 }
Fo170 4:9b3e3c52778a 231
Fo170 4:9b3e3c52778a 232 uart.printf("==== Test Complete ====\r\n");
Fo170 4:9b3e3c52778a 233 COLOR(_GREEN_);
Fo170 4:9b3e3c52778a 234 //-------------------------------
Fo170 4:9b3e3c52778a 235 // TEST continu
Fo170 4:9b3e3c52778a 236 uart.printf("==== Test Continu avec %d Samples ====\r\n", NUM_SAMPLES / 10);
Fo170 4:9b3e3c52778a 237 samples = 0;
Fo170 4:9b3e3c52778a 238
Fo170 4:9b3e3c52778a 239 while(1)
Fo170 4:9b3e3c52778a 240 {
Fo170 4:9b3e3c52778a 241 a = ain0.read();
Fo170 4:9b3e3c52778a 242 samples++;
Fo170 0:70a1e939250e 243
Fo170 4:9b3e3c52778a 244 if(a == 1.0) {
Fo170 4:9b3e3c52778a 245 num_spike++; // > 2048 lsb
Fo170 4:9b3e3c52778a 246 } else if (a > (AVERAGE + 0.2500)) {
Fo170 4:9b3e3c52778a 247 num_1024++; // > 1024 lsb
Fo170 4:9b3e3c52778a 248 } else if (a > (AVERAGE + 0.0625)) {
Fo170 4:9b3e3c52778a 249 num_512++; // > 512 lsb
Fo170 4:9b3e3c52778a 250 } else if (a > (AVERAGE + 0.0312)) {
Fo170 4:9b3e3c52778a 251 num_256++; // > 256 lsb
Fo170 4:9b3e3c52778a 252 } else if (a > (AVERAGE + 0.0312)) {
Fo170 4:9b3e3c52778a 253 num_128++; // > 128 lsb
Fo170 4:9b3e3c52778a 254 } else if (a > (AVERAGE + 0.0156)) {
Fo170 4:9b3e3c52778a 255 num_64++; // > 64 lsb
Fo170 4:9b3e3c52778a 256 } else if (a > (AVERAGE + 0.0078)) {
Fo170 4:9b3e3c52778a 257 num_32++; // > 32 lsb
Fo170 4:9b3e3c52778a 258 } else if (a > (AVERAGE + 0.0039)) {
Fo170 4:9b3e3c52778a 259 num_16++; // > 16 lsb
Fo170 4:9b3e3c52778a 260 } else if (a > (AVERAGE + 0.0019)) {
Fo170 4:9b3e3c52778a 261 num_8++; // > 8 lsb
Fo170 4:9b3e3c52778a 262 } else if (a > (AVERAGE + 0.0009)) {
Fo170 4:9b3e3c52778a 263 num_4++; // > 8 lsb
Fo170 4:9b3e3c52778a 264 }
Fo170 0:70a1e939250e 265
Fo170 4:9b3e3c52778a 266 if(samples == NUM_SAMPLES / 10)
Fo170 4:9b3e3c52778a 267 {
Fo170 4:9b3e3c52778a 268 uart.printf("Samples\t");
Fo170 4:9b3e3c52778a 269 uart.printf("4\t");
Fo170 4:9b3e3c52778a 270 uart.printf("8\t");
Fo170 4:9b3e3c52778a 271 uart.printf("16\t");
Fo170 4:9b3e3c52778a 272 uart.printf("32\t");
Fo170 4:9b3e3c52778a 273 uart.printf("64\t");
Fo170 4:9b3e3c52778a 274 uart.printf("128\t");
Fo170 4:9b3e3c52778a 275 uart.printf("256\t");
Fo170 4:9b3e3c52778a 276 uart.printf("512\t");
Fo170 4:9b3e3c52778a 277 uart.printf("1024\t");
Fo170 4:9b3e3c52778a 278 uart.printf("Spikes\r\n");
Fo170 4:9b3e3c52778a 279 // Every 500,000 print the results
Fo170 4:9b3e3c52778a 280 uart.printf("%d\t",samples);
Fo170 4:9b3e3c52778a 281 uart.printf("%d\t",num_4);
Fo170 4:9b3e3c52778a 282 uart.printf("%d\t",num_8);
Fo170 4:9b3e3c52778a 283 uart.printf("%d\t",num_16);
Fo170 4:9b3e3c52778a 284 uart.printf("%d\t",num_32);
Fo170 4:9b3e3c52778a 285 uart.printf("%d\t",num_64);
Fo170 4:9b3e3c52778a 286 uart.printf("%d\t",num_128);
Fo170 4:9b3e3c52778a 287 uart.printf("%d\t",num_256);
Fo170 4:9b3e3c52778a 288 uart.printf("%d\t",num_512);
Fo170 4:9b3e3c52778a 289 uart.printf("%d\t",num_1024);
Fo170 4:9b3e3c52778a 290 uart.printf("%d\r\n\r\n",num_spike);
Fo170 4:9b3e3c52778a 291 num_4 = 0;
Fo170 4:9b3e3c52778a 292 num_8 = 0;
Fo170 4:9b3e3c52778a 293 num_16 = 0;
Fo170 4:9b3e3c52778a 294 num_32 = 0;
Fo170 4:9b3e3c52778a 295 num_64 = 0;
Fo170 4:9b3e3c52778a 296 num_128 = 0;
Fo170 4:9b3e3c52778a 297 num_256 = 0;
Fo170 4:9b3e3c52778a 298 num_512 = 0;
Fo170 4:9b3e3c52778a 299 num_1024 = 0;
Fo170 4:9b3e3c52778a 300 num_spike = 0;
Fo170 4:9b3e3c52778a 301 samples = 0;
Fo170 4:9b3e3c52778a 302 }
Fo170 4:9b3e3c52778a 303 }
Fo170 0:70a1e939250e 304 }
Fo170 0:70a1e939250e 305
Fo170 0:70a1e939250e 306 //--------------------------------------------
Fo170 0:70a1e939250e 307
Fo170 0:70a1e939250e 308 int main(void)
Fo170 0:70a1e939250e 309 {
Fo170 4:9b3e3c52778a 310 // initialisation des variables
Fo170 4:9b3e3c52778a 311
Fo170 0:70a1e939250e 312
Fo170 4:9b3e3c52778a 313 //--------------
Fo170 4:9b3e3c52778a 314 COLOR(_BLACK_);
Fo170 4:9b3e3c52778a 315 // Serial Interface eth;
Fo170 4:9b3e3c52778a 316 // Serial port configuration (valeurs par defaut) : 9600 baud, 8-bit data, no parity, stop bit
Fo170 4:9b3e3c52778a 317 uart.baud(9600);
Fo170 4:9b3e3c52778a 318 uart.format(8, SerialBase::None, 1);
Fo170 4:9b3e3c52778a 319 COLOR(_RED_);
Fo170 4:9b3e3c52778a 320 uart.printf("WIZwiki-W7500 - mBED ( Compiled at : %s and %s )\r\n", __DATE__ , __TIME__);
Fo170 4:9b3e3c52778a 321 uart.printf("Initializing\n\r");
Fo170 4:9b3e3c52778a 322 wait(1.0);
Fo170 4:9b3e3c52778a 323
Fo170 4:9b3e3c52778a 324 PerformanceMeter();
Fo170 0:70a1e939250e 325 }