Tummas Tomasson / Mbed 2 deprecated PingDetector_mbedadc

Dependencies:   mbed

Committer:
tummastt
Date:
Mon Jul 30 09:57:42 2012 +0000
Revision:
0:efb27fbc92c0
Child:
1:227db871d328
Working

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tummastt 0:efb27fbc92c0 1 #include "PingDetect.h"
tummastt 0:efb27fbc92c0 2
tummastt 0:efb27fbc92c0 3 #define ClearBuffer LPC_UART0->FCR | 0x06
tummastt 0:efb27fbc92c0 4
tummastt 0:efb27fbc92c0 5 int PingDetect::Search() {
tummastt 0:efb27fbc92c0 6
tummastt 0:efb27fbc92c0 7 // pc.printf("s\n\r");
tummastt 0:efb27fbc92c0 8 for (i=0; i<SAMPLES; i++) {
tummastt 0:efb27fbc92c0 9 //Measure pin 19
tummastt 0:efb27fbc92c0 10 adc.select(p19);
tummastt 0:efb27fbc92c0 11 //Start ADC conversion
tummastt 0:efb27fbc92c0 12 adc.start();
tummastt 0:efb27fbc92c0 13 //Wait for it to complete
tummastt 0:efb27fbc92c0 14 while (!adc.done(p19));
tummastt 0:efb27fbc92c0 15
tummastt 0:efb27fbc92c0 16 //Measure pin 20
tummastt 0:efb27fbc92c0 17 adc.select(p20);
tummastt 0:efb27fbc92c0 18 //Start ADC conversion
tummastt 0:efb27fbc92c0 19 adc.start();
tummastt 0:efb27fbc92c0 20 //Wait for it to complete
tummastt 0:efb27fbc92c0 21 while (!adc.done(p20));
tummastt 0:efb27fbc92c0 22
tummastt 0:efb27fbc92c0 23 DataFront[i] = adc.read(p19);
tummastt 0:efb27fbc92c0 24 DataBack[i] = adc.read(p20);
tummastt 0:efb27fbc92c0 25 }
tummastt 0:efb27fbc92c0 26
tummastt 0:efb27fbc92c0 27 // pc.printf("%i\n\r", fft.DetectSignal(DataFront));
tummastt 0:efb27fbc92c0 28 // return notFound;
tummastt 0:efb27fbc92c0 29 l0=1;
tummastt 0:efb27fbc92c0 30 // return found;
tummastt 0:efb27fbc92c0 31 if (fft.DetectSignal(DataFront) == found) {
tummastt 0:efb27fbc92c0 32 l0=1;
tummastt 0:efb27fbc92c0 33 return found;
tummastt 0:efb27fbc92c0 34 } else {
tummastt 0:efb27fbc92c0 35 return notFound;
tummastt 0:efb27fbc92c0 36 }
tummastt 0:efb27fbc92c0 37
tummastt 0:efb27fbc92c0 38 }
tummastt 0:efb27fbc92c0 39
tummastt 0:efb27fbc92c0 40 void PingDetect::Run() {
tummastt 0:efb27fbc92c0 41 // if (no <10) {
tummastt 0:efb27fbc92c0 42 for (i=0; i<noOfSamples; i++) {
tummastt 0:efb27fbc92c0 43 //Measure pin 19
tummastt 0:efb27fbc92c0 44 adc.select(p19);
tummastt 0:efb27fbc92c0 45 //Start ADC conversion
tummastt 0:efb27fbc92c0 46 adc.start();
tummastt 0:efb27fbc92c0 47 //Wait for it to complete
tummastt 0:efb27fbc92c0 48 while (!adc.done(p19));
tummastt 0:efb27fbc92c0 49
tummastt 0:efb27fbc92c0 50 //Measure pin 20
tummastt 0:efb27fbc92c0 51 adc.select(p20);
tummastt 0:efb27fbc92c0 52 //Start ADC conversion
tummastt 0:efb27fbc92c0 53 adc.start();
tummastt 0:efb27fbc92c0 54 //Wait for it to complete
tummastt 0:efb27fbc92c0 55 while (!adc.done(p20));
tummastt 0:efb27fbc92c0 56
tummastt 0:efb27fbc92c0 57 DataFront[i] = adc.read(p19);
tummastt 0:efb27fbc92c0 58 DataBack[i] = adc.read(p20);
tummastt 0:efb27fbc92c0 59 }
tummastt 0:efb27fbc92c0 60 pc.printf("!");
tummastt 0:efb27fbc92c0 61 for (i=0; i<noOfSamples; i++) {
tummastt 0:efb27fbc92c0 62 pc.printf("%X,%X,", DataFront[i], DataBack[i]);
tummastt 0:efb27fbc92c0 63 }
tummastt 0:efb27fbc92c0 64 pc.printf("\n\r");
tummastt 0:efb27fbc92c0 65 }
tummastt 0:efb27fbc92c0 66
tummastt 0:efb27fbc92c0 67
tummastt 0:efb27fbc92c0 68 void PingDetect::CalculateFFT() {
tummastt 0:efb27fbc92c0 69 for (k=0; k<NO_OF_FFT; k++) {
tummastt 0:efb27fbc92c0 70 for (i=0; i<SAMPLES; i++) {
tummastt 0:efb27fbc92c0 71 //Measure pin 19
tummastt 0:efb27fbc92c0 72 adc.select(p19);
tummastt 0:efb27fbc92c0 73 //Start ADC conversion
tummastt 0:efb27fbc92c0 74 adc.start();
tummastt 0:efb27fbc92c0 75 //Wait for it to complete
tummastt 0:efb27fbc92c0 76 while (!adc.done(p19));
tummastt 0:efb27fbc92c0 77
tummastt 0:efb27fbc92c0 78 //Measure pin 20
tummastt 0:efb27fbc92c0 79 adc.select(p20);
tummastt 0:efb27fbc92c0 80 //Start ADC conversion
tummastt 0:efb27fbc92c0 81 adc.start();
tummastt 0:efb27fbc92c0 82 //Wait for it to complete
tummastt 0:efb27fbc92c0 83 while (!adc.done(p20));
tummastt 0:efb27fbc92c0 84
tummastt 0:efb27fbc92c0 85 DataFront[i] = adc.read(p19);
tummastt 0:efb27fbc92c0 86 DataBack[i] = adc.read(p20);
tummastt 0:efb27fbc92c0 87 }
tummastt 0:efb27fbc92c0 88
tummastt 0:efb27fbc92c0 89 fft.CalculateFFT(DataFront);
tummastt 0:efb27fbc92c0 90 printf("!");
tummastt 0:efb27fbc92c0 91
tummastt 0:efb27fbc92c0 92 for (i=0; i<SAMPLES; i=i+2) {
tummastt 0:efb27fbc92c0 93 printf("%X,", abs(fft.my[i]));
tummastt 0:efb27fbc92c0 94 }
tummastt 0:efb27fbc92c0 95
tummastt 0:efb27fbc92c0 96 }
tummastt 0:efb27fbc92c0 97
tummastt 0:efb27fbc92c0 98 }
tummastt 0:efb27fbc92c0 99
tummastt 0:efb27fbc92c0 100
tummastt 0:efb27fbc92c0 101 // If data available on the serial buffer. Flip the NewInput flag to indicate
tummastt 0:efb27fbc92c0 102 // New data received. Read in new data, write back received inputs.
tummastt 0:efb27fbc92c0 103 // then clear the serial buffer to get rid off any rubbish data such as characters.
tummastt 0:efb27fbc92c0 104 int PingDetect::ReadSerial(int cmd) {
tummastt 0:efb27fbc92c0 105 // If data received from PC
tummastt 0:efb27fbc92c0 106 if (pc.readable()) {
tummastt 0:efb27fbc92c0 107 TempCmd = pc.getc();
tummastt 0:efb27fbc92c0 108 pc.printf("%c\n\r", TempCmd);
tummastt 0:efb27fbc92c0 109 if (TempCmd == '1')
tummastt 0:efb27fbc92c0 110 return start;
tummastt 0:efb27fbc92c0 111 else if (TempCmd == '2')
tummastt 0:efb27fbc92c0 112 return calcFFT;
tummastt 0:efb27fbc92c0 113 else
tummastt 0:efb27fbc92c0 114 return stop;
tummastt 0:efb27fbc92c0 115 }
tummastt 0:efb27fbc92c0 116 return cmd;
tummastt 0:efb27fbc92c0 117 }
tummastt 0:efb27fbc92c0 118
tummastt 0:efb27fbc92c0 119 void PingDetect::SendSerial(int cmd) {
tummastt 0:efb27fbc92c0 120 pc.printf("Cmd = %i\n\r", cmd);
tummastt 0:efb27fbc92c0 121 }