Impedance Fast Circuitry Software

Dependencies:   mbed-dsp mbed

Fork of DSP_200kHz by Mazzeo Research Group

Committer:
bmazzeo
Date:
Tue Feb 23 19:58:58 2016 +0000
Revision:
64:bb4a4bd57681
Parent:
63:7903a33e2fd4
Child:
66:72c5c24e532c
Apparently working.

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 64:bb4a4bd57681 55 pdb_start();
bmazzeo 64:bb4a4bd57681 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 63:7903a33e2fd4 77
bmazzeo 64:bb4a4bd57681 78
bmazzeo 64:bb4a4bd57681 79 /* while(1)
bmazzeo 63:7903a33e2fd4 80 {
bmazzeo 63:7903a33e2fd4 81 if(pc.readable() > 0) {
bmazzeo 61:a56cca07d4a6 82 char temp = pc.getc();
bmazzeo 61:a56cca07d4a6 83
bmazzeo 61:a56cca07d4a6 84 switch(temp) {
bmazzeo 61:a56cca07d4a6 85 case 'F': // clear the samples
bmazzeo 61:a56cca07d4a6 86 case 'f':
bmazzeo 61:a56cca07d4a6 87 for(int i = 0; i < len; i++) {sample_array0[i] = 0; sample_array1[i] = 0;}
bmazzeo 61:a56cca07d4a6 88 pc.printf("Arrays cleared\r\n");
bmazzeo 61:a56cca07d4a6 89 // then display the samples
bmazzeo 61:a56cca07d4a6 90 break;
bmazzeo 61:a56cca07d4a6 91 case 'S': // display what's been sampled
bmazzeo 61:a56cca07d4a6 92 case 's':
bmazzeo 61:a56cca07d4a6 93 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 63:7903a33e2fd4 94 for(int i = len; i < len*2; 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,(float) 100, (float) 100);
bmazzeo 61:a56cca07d4a6 95 pc.printf("\r\n");
bmazzeo 63:7903a33e2fd4 96 //pc.printf("0: %f\t %f\t %f\t %f\r\n",0,sample_array0[0]*3.3/65535,sample_array1[0]*3.3/65535,static_input_array0[0]*3.3/65535,static_input_array1[0]*3.3/65535);
bmazzeo 63:7903a33e2fd4 97 //pc.printf("\r\n");
bmazzeo 61:a56cca07d4a6 98 break;
bmazzeo 61:a56cca07d4a6 99
bmazzeo 61:a56cca07d4a6 100 case 'D': // DMA debug
bmazzeo 61:a56cca07d4a6 101 case 'd':
bmazzeo 61:a56cca07d4a6 102 pc.printf("DMA Status:\r\n");
bmazzeo 61:a56cca07d4a6 103 pc.printf("DMA_TCD0_SOFF: %x\r\n", DMA_TCD0_SOFF);
bmazzeo 61:a56cca07d4a6 104 pc.printf("DMA_TCD1_SOFF: %x\r\n", DMA_TCD1_SOFF);
bmazzeo 63:7903a33e2fd4 105 pc.printf("DMA_TCD0_SADDR: %i\r\n", DMA_TCD0_SADDR);
bmazzeo 63:7903a33e2fd4 106 pc.printf("DMA_TCD0_DADDR: %i\r\n", DMA_TCD0_DADDR);
bmazzeo 63:7903a33e2fd4 107
bmazzeo 61:a56cca07d4a6 108 pc.printf("DMA_TCD0_CITER_ELINKNO: %x\r\n", DMA_TCD0_CITER_ELINKNO);
bmazzeo 61:a56cca07d4a6 109 pc.printf("DMA_TCD0_BITER_ELINKNO: %x\r\n", DMA_TCD0_BITER_ELINKNO);
bmazzeo 61:a56cca07d4a6 110 pc.printf("DMA_TCD1_CITER_ELINKNO: %x\r\n", DMA_TCD1_CITER_ELINKNO);
bmazzeo 61:a56cca07d4a6 111 pc.printf("DMA_TCD1_BITER_ELINKNO: %x\r\n", DMA_TCD1_BITER_ELINKNO);
bmazzeo 61:a56cca07d4a6 112 pc.printf("DMA_TCD2_CITER_ELINKNO: %x\r\n", DMA_TCD2_CITER_ELINKNO);
bmazzeo 61:a56cca07d4a6 113 pc.printf("DMA_TCD2_BITER_ELINKNO: %x\r\n", DMA_TCD2_BITER_ELINKNO);
bmazzeo 61:a56cca07d4a6 114 pc.printf("DMA_TCD3_CITER_ELINKNO: %x\r\n", DMA_TCD3_CITER_ELINKNO);
bmazzeo 61:a56cca07d4a6 115 pc.printf("DMA_TCD3_BITER_ELINKNO: %x\r\n", DMA_TCD3_BITER_ELINKNO);
bmazzeo 63:7903a33e2fd4 116 pc.printf("DMA Status:\r\n");
bmazzeo 63:7903a33e2fd4 117 pc.printf("DMA_TCD4_SADDR: %i\r\n", DMA_TCD4_SADDR);
bmazzeo 63:7903a33e2fd4 118 pc.printf("DMA_TCD4_DADDR: %i\r\n", DMA_TCD4_DADDR);
bmazzeo 63:7903a33e2fd4 119 pc.printf("DMA_TCD4_CITER_ELINKNO: %x\r\n", DMA_TCD4_CITER_ELINKNO);
bmazzeo 63:7903a33e2fd4 120 pc.printf("DMA_TCD4_BITER_ELINKNO: %x\r\n", DMA_TCD4_BITER_ELINKNO);
bmazzeo 63:7903a33e2fd4 121 pc.printf("DMA_TCD5_SADDR: %i\r\n", DMA_TCD5_SADDR);
bmazzeo 63:7903a33e2fd4 122 pc.printf("DMA_TCD5_DADDR: %i\r\n", DMA_TCD5_DADDR);
bmazzeo 63:7903a33e2fd4 123 pc.printf("DMA_TCD5_CITER_ELINKNO: %x\r\n", DMA_TCD5_CITER_ELINKNO);
bmazzeo 63:7903a33e2fd4 124 pc.printf("DMA_TCD5_BITER_ELINKNO: %x\r\n", DMA_TCD5_BITER_ELINKNO);
bmazzeo 63:7903a33e2fd4 125 pc.printf("DMA_TCD6_CITER_ELINKNO: %x\r\n", DMA_TCD6_CITER_ELINKNO);
bmazzeo 63:7903a33e2fd4 126 pc.printf("DMA_TCD6_BITER_ELINKNO: %x\r\n", DMA_TCD6_BITER_ELINKNO);
bmazzeo 63:7903a33e2fd4 127 pc.printf("DMA_TCD7_CITER_ELINKNO: %x\r\n", DMA_TCD7_CITER_ELINKNO);
bmazzeo 63:7903a33e2fd4 128 pc.printf("DMA_TCD7_BITER_ELINKNO: %x\r\n", DMA_TCD7_BITER_ELINKNO);
bmazzeo 63:7903a33e2fd4 129 pc.printf("DMA_TCD8_CITER_ELINKNO: %x\r\n", DMA_TCD8_CITER_ELINKNO);
bmazzeo 63:7903a33e2fd4 130 pc.printf("DMA_TCD8_BITER_ELINKNO: %x\r\n", DMA_TCD8_BITER_ELINKNO);
bmazzeo 63:7903a33e2fd4 131 pc.printf("DMA_TCD9_CITER_ELINKNO: %x\r\n", DMA_TCD9_CITER_ELINKNO);
bmazzeo 63:7903a33e2fd4 132 pc.printf("DMA_TCD9_BITER_ELINKNO: %x\r\n", DMA_TCD9_BITER_ELINKNO);
bmazzeo 61:a56cca07d4a6 133 break;
bmazzeo 61:a56cca07d4a6 134
bmazzeo 61:a56cca07d4a6 135
bmazzeo 61:a56cca07d4a6 136
bmazzeo 61:a56cca07d4a6 137
bmazzeo 61:a56cca07d4a6 138 // Programmable Delay Block debug
bmazzeo 61:a56cca07d4a6 139 case 'B':
bmazzeo 61:a56cca07d4a6 140 case 'b':
bmazzeo 61:a56cca07d4a6 141 pc.printf("Started PDB...samples being taken\r\n");
bmazzeo 61:a56cca07d4a6 142 pdb_start();
bmazzeo 61:a56cca07d4a6 143 break;
bmazzeo 61:a56cca07d4a6 144 case 'K':
bmazzeo 61:a56cca07d4a6 145 case 'k':
bmazzeo 61:a56cca07d4a6 146 pc.printf("Stopped PDB\r\n");
bmazzeo 61:a56cca07d4a6 147 pdb_stop();
bmazzeo 61:a56cca07d4a6 148 break;
bmazzeo 63:7903a33e2fd4 149 case 'T':
bmazzeo 63:7903a33e2fd4 150 case 't':
bmazzeo 63:7903a33e2fd4 151 pc.printf("One step of PDB\r\n");
bmazzeo 63:7903a33e2fd4 152 pdb_step();
bmazzeo 63:7903a33e2fd4 153 break;
bmazzeo 61:a56cca07d4a6 154 case 'V':
bmazzeo 61:a56cca07d4a6 155 case 'v':
bmazzeo 61:a56cca07d4a6 156 pc.printf("PDB: %i\r\n",PDB0_CNT);
bmazzeo 61:a56cca07d4a6 157 break;
bmazzeo 61:a56cca07d4a6 158 }
bmazzeo 61:a56cca07d4a6 159
bmazzeo 55:2526b3317bc8 160 }
bmazzeo 61:a56cca07d4a6 161
bmazzeo 61:a56cca07d4a6 162 }
bmazzeo 61:a56cca07d4a6 163
bmazzeo 61:a56cca07d4a6 164 }
bmazzeo 64:bb4a4bd57681 165 */