Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: main.cpp
- Revision:
- 3:4c45267b653d
- Parent:
- 2:4c61969f2207
--- a/main.cpp Fri Dec 02 11:42:51 2011 +0000
+++ b/main.cpp Fri Dec 02 13:51:06 2011 +0000
@@ -1,104 +1,115 @@
-#include "mbed.h"
-
-#define NUM_SAMPLES 500000 // size of sample series
-
-Serial pc(USBTX,USBRX);
-
-AnalogIn ain(p17);
-
-// initialise error counters
-int num_4;
-int num_8;
-int num_16;
-int num_32;
-int num_64;
-int num_128;
-int num_256;
-int num_512;
-int num_1024;
-int num_2048;
-
-
-int main() {
-
- pc.baud(115200);
-
- int num_samples = 0;
-
- num_4 = 0;
- num_8 = 0;
- num_16 = 0;
- num_32 = 0;
- num_64 = 0;
- num_128 = 0;
- num_256 = 0;
- num_512 = 0;
- num_1024 = 0;
- num_2048 = 0;
-
-// Take the average over 500,000 samples
-// This is because the bias to 1.65v has a tolerance
- float AVERAGE = 0.5;
-
- pc.printf("Taking an average over %d samples\n",NUM_SAMPLES);
- while (num_samples < NUM_SAMPLES) {
- float r = ain.read();
-
- if ((r > 0.45) && (r < 0.55)) {
- AVERAGE += r;
- num_samples++;
- }
- }
-
- AVERAGE /= NUM_SAMPLES;
-
- num_samples = 0;
- pc.printf("Average = %f\n",AVERAGE);
-
-
-// Now start sampling series of 500,000
-// acculumating the errors seen in each range
- while (1) {
-
- for (int i = 0; i < NUM_SAMPLES ; i++) {
- float a = ain.read();
-
- if (a > (AVERAGE + 0.5000)) {
- num_2048++; // > 2048 lsb
- } else if (a > (AVERAGE + 0.2500)) {
- num_1024++; // > 1024 lsb
- } else if (a > (AVERAGE + 0.0625)) {
- num_512++; // > 512 lsb
- } else if (a > (AVERAGE + 0.0312)) {
- num_256++; // > 256 lsb
- } else if (a > (AVERAGE + 0.0312)) {
- num_128++; // > 128 lsb
- } else if (a > (AVERAGE + 0.0156)) {
- num_64++; // > 64 lsb
- } else if (a > (AVERAGE + 0.0078)) {
- num_32++; // > 32 lsb
- } else if (a > (AVERAGE + 0.0039)) {
- num_16++; // > 16 lsb
- } else if (a > (AVERAGE + 0.0019)) {
- num_8++; // > 8 lsb
- } else if (a > (AVERAGE + 0.0009)) {
- num_4++; // > 8 lsb
- }
-
- num_samples++;
- }
-
- // Every 500,000 print the results
- pc.printf("%d\t",num_samples);
- pc.printf("%d\t",num_4);
- pc.printf("%d\t",num_8);
- pc.printf("%d\t",num_16);
- pc.printf("%d\t",num_32);
- pc.printf("%d\t",num_64);
- pc.printf("%d\t",num_128);
- pc.printf("%d\t",num_256);
- pc.printf("%d\t",num_512);
- pc.printf("%d\t",num_1024);
- pc.printf("%d\n",num_2048);
- }
-}
+#include "mbed.h"
+
+#define NUM_SAMPLES 500000 // size of sample series
+#define SAMPLE_BLOCKS 5
+
+Timer t;
+
+Serial pc(USBTX,USBRX);
+
+AnalogIn ain(p20);
+
+// initialise error counters
+int num_4;
+int num_8;
+int num_16;
+int num_32;
+int num_64;
+int num_128;
+int num_256;
+int num_512;
+int num_1024;
+int num_2048;
+
+
+int main() {
+
+ pc.baud(115200);
+
+ int num_samples = 0;
+
+ num_4 = 0;
+ num_8 = 0;
+ num_16 = 0;
+ num_32 = 0;
+ num_64 = 0;
+ num_128 = 0;
+ num_256 = 0;
+ num_512 = 0;
+ num_1024 = 0;
+ num_2048 = 0;
+
+// Take the average over 500,000 samples
+// This is because the bias to 1.65v has a tolerance
+ float AVERAGE = 0.5;
+
+ pc.printf("Taking an average over %d samples\n",NUM_SAMPLES);
+ while (num_samples < NUM_SAMPLES) {
+ float r = ain.read();
+
+ if ((r > 0.45) && (r < 0.55)) {
+ AVERAGE += r;
+ num_samples++;
+ }
+ }
+
+ AVERAGE /= NUM_SAMPLES;
+
+ num_samples = 0;
+ pc.printf("Average = %f\n",AVERAGE);
+
+
+// Now start sampling series of 500,000
+// acculumating the errors seen in each range
+ pc.printf("Profiling %d samples\n",SAMPLE_BLOCKS*NUM_SAMPLES);
+ for (int j=0; j < SAMPLE_BLOCKS ; j++) {
+
+ t.reset();
+ t.start();
+
+ for (int i = 0; i < NUM_SAMPLES ; i++) {
+ float a = ain.read();
+
+ if (a > (AVERAGE + 0.5000)) {
+ num_2048++; // > 2048 lsb
+ } else if (a > (AVERAGE + 0.2500)) {
+ num_1024++; // > 1024 lsb
+ } else if (a > (AVERAGE + 0.0625)) {
+ num_512++; // > 512 lsb
+ } else if (a > (AVERAGE + 0.0312)) {
+ num_256++; // > 256 lsb
+ } else if (a > (AVERAGE + 0.0312)) {
+ num_128++; // > 128 lsb
+ } else if (a > (AVERAGE + 0.0156)) {
+ num_64++; // > 64 lsb
+ } else if (a > (AVERAGE + 0.0078)) {
+ num_32++; // > 32 lsb
+ } else if (a > (AVERAGE + 0.0039)) {
+ num_16++; // > 16 lsb
+ } else if (a > (AVERAGE + 0.0019)) {
+ num_8++; // > 8 lsb
+ } else if (a > (AVERAGE + 0.0009)) {
+ num_4++; // > 8 lsb
+ }
+
+ num_samples++;
+ }
+ t.stop();
+
+ // Every 500,000 print the results
+ pc.printf("%d\t",num_samples);
+ pc.printf("%d\t",num_4);
+ pc.printf("%d\t",num_8);
+ pc.printf("%d\t",num_16);
+ pc.printf("%d\t",num_32);
+ pc.printf("%d\t",num_64);
+ pc.printf("%d\t",num_128);
+ pc.printf("%d\t",num_256);
+ pc.printf("%d\t",num_512);
+ pc.printf("%d\t",num_1024);
+ pc.printf("%d\t",num_2048);
+ pc.printf("%f\n",t.read());
+ }
+
+ pc.printf("==== Test Complete ====\n");
+}