Dependencies:   mbed-dsp mbed

Fork of DSP_200kHz by Mazzeo Research Group

Committer:
bmazzeo
Date:
Thu Feb 18 23:20:49 2016 +0000
Revision:
57:7b8c49e1c1f6
Parent:
56:7e08cbc3a4f1
Child:
58:4bee89daccff
with total loop sampling status

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