slave2

Dependencies:   PinDetect dsp mbed-rtos mbed

Committer:
cpark308
Date:
Mon Apr 25 01:43:46 2016 +0000
Revision:
1:caeb5792f292
Parent:
0:7ee25b048596
Child:
2:919431d2e1a7
master & slave in sync. 50kHz

Who changed what in which revision?

UserRevisionLine numberNew contents of line
cpark308 0:7ee25b048596 1 #include "mbed.h"
cpark308 0:7ee25b048596 2 #include "PinDetect.h"
cpark308 0:7ee25b048596 3 #include "rtos.h"
cpark308 0:7ee25b048596 4
cpark308 1:caeb5792f292 5 DigitalOut myled(LED1); //LEDS for debug purposes
cpark308 0:7ee25b048596 6 DigitalOut myled2(LED2);
cpark308 0:7ee25b048596 7 DigitalOut myled4(LED4);
cpark308 1:caeb5792f292 8 AnalogIn audioIn(p20);//pin for sound capture
cpark308 1:caeb5792f292 9 //AnalogOut outfunction(p18);
cpark308 1:caeb5792f292 10 //DigitalOut masterSignalOut(p26);
cpark308 1:caeb5792f292 11 InterruptIn startButton(p21);
cpark308 1:caeb5792f292 12 InterruptIn printButton(p22);
cpark308 1:caeb5792f292 13 //InterruptIn trigger(p25);
cpark308 1:caeb5792f292 14 Serial pc(USBTX,USBRX);//serial to computer
cpark308 1:caeb5792f292 15 Serial master(p9,p10);//serial to slave 1
cpark308 1:caeb5792f292 16 #define samples 300 //how many samples to take
cpark308 1:caeb5792f292 17 float* data; //set up the recording array
cpark308 1:caeb5792f292 18 float* dataSlave1; //set up array for slave1's data
cpark308 1:caeb5792f292 19 Timer ti; //Timer to determine sampling rate
cpark308 1:caeb5792f292 20 int startTime;
cpark308 1:caeb5792f292 21 int endTime;
cpark308 1:caeb5792f292 22 int sampleRate;
cpark308 0:7ee25b048596 23 int counter;
cpark308 1:caeb5792f292 24 int start;
cpark308 1:caeb5792f292 25 int print;
cpark308 0:7ee25b048596 26
cpark308 0:7ee25b048596 27 void analogScope(void const *args){
cpark308 0:7ee25b048596 28 counter = 0;
cpark308 0:7ee25b048596 29 myled = 0;
cpark308 0:7ee25b048596 30 while(1){
cpark308 0:7ee25b048596 31 //outfunction = (ti.read_us()%1000)*0.001;
cpark308 1:caeb5792f292 32 //myled = (((int)(ti.read_ms())>>10)%1);
cpark308 1:caeb5792f292 33 //outfunction = (counter%10)*0.1;
cpark308 0:7ee25b048596 34 counter++;
cpark308 0:7ee25b048596 35 myled = !myled;
cpark308 1:caeb5792f292 36 //Thread::wait_us(50);
cpark308 0:7ee25b048596 37 }
cpark308 0:7ee25b048596 38 }
cpark308 0:7ee25b048596 39 void sendinterrupt(void){
cpark308 1:caeb5792f292 40 //masterSignalOut = 1;
cpark308 0:7ee25b048596 41 }
cpark308 0:7ee25b048596 42 void interruptrecv(void){
cpark308 0:7ee25b048596 43 ti.reset();
cpark308 0:7ee25b048596 44 myled4 = !myled4;
cpark308 0:7ee25b048596 45 counter = 0;
cpark308 1:caeb5792f292 46 //masterSignalOut = 0;
cpark308 1:caeb5792f292 47 }
cpark308 1:caeb5792f292 48 void startRecording(void){
cpark308 1:caeb5792f292 49 start = 1;
cpark308 1:caeb5792f292 50 myled2 = 1;
cpark308 1:caeb5792f292 51 }
cpark308 1:caeb5792f292 52 void startPrint(void){
cpark308 1:caeb5792f292 53 print = 1;
cpark308 1:caeb5792f292 54 myled4 = 1;
cpark308 0:7ee25b048596 55 }
cpark308 0:7ee25b048596 56 int main() {
cpark308 0:7ee25b048596 57 ti.reset();
cpark308 1:caeb5792f292 58 start = 0;
cpark308 0:7ee25b048596 59 myled2 = 0;
cpark308 0:7ee25b048596 60 myled4 = 0;
cpark308 1:caeb5792f292 61 //allocate memory to the data arrays
cpark308 1:caeb5792f292 62 data = (float*) malloc(sizeof(float)*samples);
cpark308 1:caeb5792f292 63 dataSlave1 = (float*) malloc(sizeof(float)*samples);
cpark308 1:caeb5792f292 64 //masterSignalOut = 0;
cpark308 1:caeb5792f292 65 //startButton.mode(PullUp);
cpark308 1:caeb5792f292 66 startButton.fall(&startRecording);
cpark308 1:caeb5792f292 67 //printButton.mode(PullUp);
cpark308 1:caeb5792f292 68 printButton.fall(&startPrint);
cpark308 1:caeb5792f292 69 //trigger.rise(&interruptrecv);
cpark308 1:caeb5792f292 70 //Thread threadanalog(analogScope);
cpark308 1:caeb5792f292 71 //threadanalog.set_priority(osPriorityLow);
cpark308 0:7ee25b048596 72 while(1) {
cpark308 1:caeb5792f292 73 //myled2 = !myled2;
cpark308 1:caeb5792f292 74 if(start){ //once button is pressed
cpark308 1:caeb5792f292 75 startTime = ti.read_us(); //get start time
cpark308 1:caeb5792f292 76 for(int i = 0;i<samples;i++){ //record 300 samples
cpark308 1:caeb5792f292 77 data[i] = audioIn;
cpark308 1:caeb5792f292 78 }
cpark308 1:caeb5792f292 79 endTime = ti.read_us(); //get end time
cpark308 1:caeb5792f292 80 sampleRate = (int)(samples*1000000/(endTime-startTime)); //calculate sample rate
cpark308 1:caeb5792f292 81 start = 0; //stop
cpark308 1:caeb5792f292 82 }
cpark308 1:caeb5792f292 83 if(print){
cpark308 1:caeb5792f292 84 for(int i = 0;i<samples;i++){
cpark308 1:caeb5792f292 85 pc.printf("%5f ",data[i]);
cpark308 1:caeb5792f292 86 }
cpark308 1:caeb5792f292 87 pc.printf("\n %5d",sampleRate);
cpark308 1:caeb5792f292 88 print = 0;
cpark308 1:caeb5792f292 89 }
cpark308 0:7ee25b048596 90 }
cpark308 0:7ee25b048596 91 }