Dependencies:   mbed-dsp mbed

Fork of DSP_200kHz by Mazzeo Research Group

Committer:
bmazzeo
Date:
Mon Feb 22 19:45:04 2016 +0000
Revision:
61:a56cca07d4a6
Parent:
58:4bee89daccff
Child:
63:7903a33e2fd4
Minor loop linking with outputs.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
donatien 0:bb128f0e952f 1 #include "mbed.h"
timmey9 22:523e316cbe70 2
timmey9 52:5a40cc58c4c2 3 // Sampling
bmazzeo 53:83a90a47c1fd 4 #include "DMA_sampling/adc.h"
bmazzeo 54:1697dc574b96 5 #include "DMA_sampling/dac.h"
bmazzeo 55:2526b3317bc8 6 #include "DMA_sampling/pdb.h"
timmey9 22:523e316cbe70 7
timmey9 22:523e316cbe70 8 // for debug purposes
timmey9 18:b17ddeeb1c09 9 Serial pc(USBTX, USBRX);
timmey9 18:b17ddeeb1c09 10 DigitalOut led_red(LED_RED);
timmey9 18:b17ddeeb1c09 11 DigitalOut led_green(LED_GREEN);
timmey9 18:b17ddeeb1c09 12 DigitalOut led_blue(LED_BLUE);
bmazzeo 58:4bee89daccff 13 DigitalOut status_0(D0);
bmazzeo 58:4bee89daccff 14 DigitalOut status_1(D1);
timmey9 51:43143a3fc2d7 15
timmey9 52:5a40cc58c4c2 16 // defined in dma.cpp
timmey9 45:d591d138cdeb 17 extern int len;
timmey9 45:d591d138cdeb 18 extern uint16_t sample_array0[];
timmey9 45:d591d138cdeb 19 extern uint16_t sample_array1[];
timmey9 41:3e0623d81b9a 20
bmazzeo 54:1697dc574b96 21 extern uint16_t static_input_array0[];
bmazzeo 54:1697dc574b96 22 extern uint16_t static_input_array1[];
bmazzeo 54:1697dc574b96 23
bmazzeo 55:2526b3317bc8 24 extern uint16_t static_output_array0[];
bmazzeo 56:7e08cbc3a4f1 25 extern uint16_t output_array0[];
bmazzeo 55:2526b3317bc8 26
bmazzeo 57:7b8c49e1c1f6 27 extern uint16_t sampling_status;
bmazzeo 57:7b8c49e1c1f6 28
timmey9 22:523e316cbe70 29 using namespace std;
timmey9 17:2f978f823020 30
emilmont 7:65188f4a8c25 31 int main() {
timmey9 22:523e316cbe70 32 led_blue = 1;
timmey9 35:df40c4566826 33 led_green = 1;
timmey9 18:b17ddeeb1c09 34 led_red = 1;
timmey9 34:44cc9b76a507 35
timmey9 18:b17ddeeb1c09 36 pc.baud(230400);
timmey9 34:44cc9b76a507 37 pc.printf("Starting\r\n");
timmey9 27:8c2b30c855d1 38
bmazzeo 55:2526b3317bc8 39 pdb_init(); // Initalize PDB
bmazzeo 55:2526b3317bc8 40
bmazzeo 54:1697dc574b96 41 dac_init(); // initializes DAC
bmazzeo 54:1697dc574b96 42
timmey9 45:d591d138cdeb 43 adc_init(); // always initialize adc before dma
bmazzeo 53:83a90a47c1fd 44
bmazzeo 53:83a90a47c1fd 45 pc.printf("ADC Initialized\r\n");
bmazzeo 53:83a90a47c1fd 46
timmey9 51:43143a3fc2d7 47 dma_init(); // initializes DMAs
bmazzeo 55:2526b3317bc8 48 dma_reset(); // This clears any DMA triggers that may have gotten things into a different state
timmey9 45:d591d138cdeb 49
bmazzeo 54:1697dc574b96 50
timmey9 46:a015ebf4663b 51 led_green = 1;
timmey9 38:ec3b16c130d7 52
timmey9 40:bd6d8c35e822 53 pc.printf("\r\n\r\n\r\n");
timmey9 37:8bdc71f3e874 54
bmazzeo 58:4bee89daccff 55 pdb_start();
bmazzeo 61:a56cca07d4a6 56 while(1)
bmazzeo 61:a56cca07d4a6 57 {
bmazzeo 61:a56cca07d4a6 58 while(sampling_status == 0)
bmazzeo 61:a56cca07d4a6 59 {
bmazzeo 61:a56cca07d4a6 60 led_green = 1;
bmazzeo 61:a56cca07d4a6 61 status_0 = 1;
bmazzeo 61:a56cca07d4a6 62 }
bmazzeo 54:1697dc574b96 63
bmazzeo 61:a56cca07d4a6 64 sampling_status = 0;
bmazzeo 61:a56cca07d4a6 65 led_green = 0;
bmazzeo 61:a56cca07d4a6 66 status_0 = 0;
bmazzeo 58:4bee89daccff 67
bmazzeo 61:a56cca07d4a6 68 status_1 = 1;
bmazzeo 61:a56cca07d4a6 69 for(int i = 0; i < len; i++)
bmazzeo 61:a56cca07d4a6 70 {
bmazzeo 61:a56cca07d4a6 71 static_output_array0[i] = static_input_array0[i] >> 4;
bmazzeo 61:a56cca07d4a6 72 //pc.printf("%i\r\n", static_input_array0[i]);
bmazzeo 61:a56cca07d4a6 73 }
bmazzeo 61:a56cca07d4a6 74 status_1 = 0;
bmazzeo 61:a56cca07d4a6 75 }
bmazzeo 61:a56cca07d4a6 76 }
bmazzeo 61:a56cca07d4a6 77
bmazzeo 61:a56cca07d4a6 78 /* if(pc.readable() > 0) {
bmazzeo 61:a56cca07d4a6 79 char temp = pc.getc();
bmazzeo 61:a56cca07d4a6 80
bmazzeo 61:a56cca07d4a6 81 switch(temp) {
bmazzeo 61:a56cca07d4a6 82 case 'F': // clear the samples
bmazzeo 61:a56cca07d4a6 83 case 'f':
bmazzeo 61:a56cca07d4a6 84 for(int i = 0; i < len; i++) {sample_array0[i] = 0; sample_array1[i] = 0;}
bmazzeo 61:a56cca07d4a6 85 pc.printf("Arrays cleared\r\n");
bmazzeo 61:a56cca07d4a6 86 // then display the samples
bmazzeo 61:a56cca07d4a6 87 break;
bmazzeo 61:a56cca07d4a6 88 case 'S': // display what's been sampled
bmazzeo 61:a56cca07d4a6 89 case 's':
bmazzeo 61:a56cca07d4a6 90 for(int i = 0; i < len; i++) pc.printf("%i: %f\t %f\t %f\t %f\r\n",i,sample_array0[i]*3.3/65535,sample_array1[i]*3.3/65535,static_input_array0[i]*3.3/65535,static_input_array1[i]*3.3/65535);
bmazzeo 61:a56cca07d4a6 91 pc.printf("\r\n");
bmazzeo 61:a56cca07d4a6 92 break;
bmazzeo 61:a56cca07d4a6 93
bmazzeo 61:a56cca07d4a6 94 case 'D': // DMA debug
bmazzeo 61:a56cca07d4a6 95 case 'd':
bmazzeo 61:a56cca07d4a6 96 pc.printf("DMA Status:\r\n");
bmazzeo 61:a56cca07d4a6 97 pc.printf("DMA_TCD0_SOFF: %x\r\n", DMA_TCD0_SOFF);
bmazzeo 61:a56cca07d4a6 98 pc.printf("DMA_TCD1_SOFF: %x\r\n", DMA_TCD1_SOFF);
bmazzeo 61:a56cca07d4a6 99 pc.printf("DMA_TCD0_CITER_ELINKNO: %x\r\n", DMA_TCD0_CITER_ELINKNO);
bmazzeo 61:a56cca07d4a6 100 pc.printf("DMA_TCD0_BITER_ELINKNO: %x\r\n", DMA_TCD0_BITER_ELINKNO);
bmazzeo 61:a56cca07d4a6 101 pc.printf("DMA_TCD1_CITER_ELINKNO: %x\r\n", DMA_TCD1_CITER_ELINKNO);
bmazzeo 61:a56cca07d4a6 102 pc.printf("DMA_TCD1_BITER_ELINKNO: %x\r\n", DMA_TCD1_BITER_ELINKNO);
bmazzeo 61:a56cca07d4a6 103 pc.printf("DMA_TCD2_CITER_ELINKNO: %x\r\n", DMA_TCD2_CITER_ELINKNO);
bmazzeo 61:a56cca07d4a6 104 pc.printf("DMA_TCD2_BITER_ELINKNO: %x\r\n", DMA_TCD2_BITER_ELINKNO);
bmazzeo 61:a56cca07d4a6 105 pc.printf("DMA_TCD3_CITER_ELINKNO: %x\r\n", DMA_TCD3_CITER_ELINKNO);
bmazzeo 61:a56cca07d4a6 106 pc.printf("DMA_TCD3_BITER_ELINKNO: %x\r\n", DMA_TCD3_BITER_ELINKNO);
bmazzeo 61:a56cca07d4a6 107
bmazzeo 61:a56cca07d4a6 108 break;
bmazzeo 61:a56cca07d4a6 109
bmazzeo 61:a56cca07d4a6 110
bmazzeo 61:a56cca07d4a6 111
bmazzeo 61:a56cca07d4a6 112
bmazzeo 61:a56cca07d4a6 113 // Programmable Delay Block debug
bmazzeo 61:a56cca07d4a6 114 case 'B':
bmazzeo 61:a56cca07d4a6 115 case 'b':
bmazzeo 61:a56cca07d4a6 116 pc.printf("Started PDB...samples being taken\r\n");
bmazzeo 61:a56cca07d4a6 117 pdb_start();
bmazzeo 61:a56cca07d4a6 118 break;
bmazzeo 61:a56cca07d4a6 119 case 'K':
bmazzeo 61:a56cca07d4a6 120 case 'k':
bmazzeo 61:a56cca07d4a6 121 pc.printf("Stopped PDB\r\n");
bmazzeo 61:a56cca07d4a6 122 pdb_stop();
bmazzeo 61:a56cca07d4a6 123 break;
bmazzeo 61:a56cca07d4a6 124 case 'V':
bmazzeo 61:a56cca07d4a6 125 case 'v':
bmazzeo 61:a56cca07d4a6 126 pc.printf("PDB: %i\r\n",PDB0_CNT);
bmazzeo 61:a56cca07d4a6 127 break;
bmazzeo 61:a56cca07d4a6 128 }
bmazzeo 61:a56cca07d4a6 129
bmazzeo 55:2526b3317bc8 130 }
bmazzeo 61:a56cca07d4a6 131
bmazzeo 61:a56cca07d4a6 132 }
bmazzeo 61:a56cca07d4a6 133
bmazzeo 61:a56cca07d4a6 134 }
bmazzeo 61:a56cca07d4a6 135 */