Tummas Tomasson / Mbed 2 deprecated PingDetector_mbedadc

Dependencies:   mbed

Revision:
0:efb27fbc92c0
Child:
1:227db871d328
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/PingDetect/PingDetect.cpp	Mon Jul 30 09:57:42 2012 +0000
@@ -0,0 +1,121 @@
+#include "PingDetect.h"
+
+#define ClearBuffer LPC_UART0->FCR | 0x06
+
+int PingDetect::Search() {
+
+//    pc.printf("s\n\r");
+    for (i=0; i<SAMPLES; i++) {
+        //Measure pin 19
+        adc.select(p19);
+        //Start ADC conversion
+        adc.start();
+        //Wait for it to complete
+        while (!adc.done(p19));
+
+        //Measure pin 20
+        adc.select(p20);
+        //Start ADC conversion
+        adc.start();
+        //Wait for it to complete
+        while (!adc.done(p20));
+
+        DataFront[i] = adc.read(p19);
+        DataBack[i] = adc.read(p20);
+    }
+
+//    pc.printf("%i\n\r", fft.DetectSignal(DataFront));
+//    return notFound;
+    l0=1;
+    // return found;
+    if (fft.DetectSignal(DataFront) == found) {
+        l0=1;
+        return found;
+    } else {
+        return notFound;
+    }
+
+}
+
+void PingDetect::Run() {
+//    if (no <10) {
+    for (i=0; i<noOfSamples; i++) {
+        //Measure pin 19
+        adc.select(p19);
+        //Start ADC conversion
+        adc.start();
+        //Wait for it to complete
+        while (!adc.done(p19));
+
+        //Measure pin 20
+        adc.select(p20);
+        //Start ADC conversion
+        adc.start();
+        //Wait for it to complete
+        while (!adc.done(p20));
+
+        DataFront[i] = adc.read(p19);
+        DataBack[i] = adc.read(p20);
+    }
+    pc.printf("!");
+    for (i=0; i<noOfSamples; i++) {
+        pc.printf("%X,%X,", DataFront[i], DataBack[i]);
+    }
+    pc.printf("\n\r");
+}
+
+
+void PingDetect::CalculateFFT() {
+    for (k=0; k<NO_OF_FFT; k++) {
+        for (i=0; i<SAMPLES; i++) {
+            //Measure pin 19
+            adc.select(p19);
+            //Start ADC conversion
+            adc.start();
+            //Wait for it to complete
+            while (!adc.done(p19));
+
+            //Measure pin 20
+            adc.select(p20);
+            //Start ADC conversion
+            adc.start();
+            //Wait for it to complete
+            while (!adc.done(p20));
+
+            DataFront[i] = adc.read(p19);
+            DataBack[i] = adc.read(p20);
+        }
+
+        fft.CalculateFFT(DataFront);
+        printf("!");
+
+        for (i=0; i<SAMPLES; i=i+2) {
+            printf("%X,", abs(fft.my[i]));
+        }
+
+    }
+
+}
+
+
+// If data available on the serial buffer. Flip the NewInput flag to indicate
+// New data received. Read in new data, write back received inputs.
+// then clear the serial buffer to get rid off any rubbish data such as characters.
+int PingDetect::ReadSerial(int cmd) {
+    // If data received from PC
+    if (pc.readable()) {
+        TempCmd = pc.getc();
+        pc.printf("%c\n\r", TempCmd);
+        if (TempCmd == '1')
+            return start;
+        else if (TempCmd == '2')
+            return calcFFT;
+        else
+            return stop;
+    }
+    return cmd;
+}
+
+void PingDetect::SendSerial(int cmd) {
+    pc.printf("Cmd = %i\n\r", cmd);
+}