Tummas Tomasson / Mbed 2 deprecated PingDetector_mbedadc

Dependencies:   mbed

Committer:
tummastt
Date:
Tue Aug 21 14:23:03 2012 +0000
Revision:
1:227db871d328
Parent:
0:efb27fbc92c0
Pinger detection program for mbed

Who changed what in which revision?

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