Impedance Fast Circuitry Software

Dependencies:   mbed-dsp mbed

Fork of Impedance_Fast_Circuitry by Jared Baxter

Committer:
baxterja
Date:
Fri Jun 22 17:57:22 2018 +0000
Revision:
86:850351993d88
Parent:
85:f1be018aacac
Added time stamping,  Also added capabilities to print complex voltage and current instead of Magnitude and phase if desired.

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"
baxterja 73:b059b5bdc664 7 #include "Jareds_DSP/filters_jared.h"
baxterja 75:8bb94685c80b 8 #include "Jareds_DSP/demodulate.h"
bmazzeo 67:ec0c58490ce6 9 // DSP
bmazzeo 67:ec0c58490ce6 10 #include "dsp.h"
baxterja 76:704fc58ffcd0 11 #include "print_data.h"
bmazzeo 67:ec0c58490ce6 12
baxterja 85:f1be018aacac 13 #define PROBE_NUMBER 5
baxterja 85:f1be018aacac 14 #if PROBE_NUMBER == 1
baxterja 85:f1be018aacac 15 #define PRE_COMPUTE_LENGTH 232
baxterja 85:f1be018aacac 16 #elif PROBE_NUMBER == 2
baxterja 85:f1be018aacac 17 #define PRE_COMPUTE_LENGTH 528
baxterja 85:f1be018aacac 18 #elif PROBE_NUMBER == 3
baxterja 85:f1be018aacac 19 #define PRE_COMPUTE_LENGTH 176
baxterja 85:f1be018aacac 20 #elif PROBE_NUMBER == 4
baxterja 85:f1be018aacac 21 #define PRE_COMPUTE_LENGTH 320
baxterja 85:f1be018aacac 22 #elif PROBE_NUMBER == 5
baxterja 85:f1be018aacac 23 #define PRE_COMPUTE_LENGTH 208
baxterja 85:f1be018aacac 24 #elif PROBE_NUMBER == 6
baxterja 85:f1be018aacac 25 #define PRE_COMPUTE_LENGTH 528
baxterja 85:f1be018aacac 26 #endif
baxterja 85:f1be018aacac 27 //#define probe_number 1 //Probe number
baxterja 85:f1be018aacac 28 const int probe_number = PROBE_NUMBER;
baxterja 85:f1be018aacac 29 //const int PCL_LUT[] = {232,528,176,320,208}; //Pre-compute-length for the different probe numbers
baxterja 85:f1be018aacac 30 //190Hz 528
baxterja 85:f1be018aacac 31 //312Hz 320
baxterja 85:f1be018aacac 32 //431Hz 232
baxterja 85:f1be018aacac 33 //481Hz 208
baxterja 85:f1be018aacac 34 //568Hz 176
baxterja 85:f1be018aacac 35
baxterja 72:0b554f5026b9 36 #define PRINT_BUFFER_LENGTH 10000
baxterja 73:b059b5bdc664 37 #define GATHER_STATISTICS 1
bmazzeo 67:ec0c58490ce6 38
baxterja 85:f1be018aacac 39 Serial pc(USBTX, USBRX);
baxterja 74:ebc9f09fda11 40
timmey9 22:523e316cbe70 41 // for debug purposes
timmey9 18:b17ddeeb1c09 42 DigitalOut led_red(LED_RED);
timmey9 18:b17ddeeb1c09 43 DigitalOut led_green(LED_GREEN);
timmey9 18:b17ddeeb1c09 44 DigitalOut led_blue(LED_BLUE);
bmazzeo 58:4bee89daccff 45 DigitalOut status_0(D0);
bmazzeo 58:4bee89daccff 46 DigitalOut status_1(D1);
baxterja 77:1ee17a9e9f8b 47 DigitalOut status_3(D3);
baxterja 85:f1be018aacac 48 DigitalOut Start_sync(D4);// Currently not being used.
baxterja 85:f1be018aacac 49 DigitalIn sw2(SW2);//Button 2 Currently not being used
baxterja 85:f1be018aacac 50 DigitalIn sw3(SW3);//Button 3 Currently not being used
timmey9 51:43143a3fc2d7 51
baxterja 86:850351993d88 52 Timer timer;
baxterja 86:850351993d88 53
timmey9 52:5a40cc58c4c2 54 // defined in dma.cpp
timmey9 45:d591d138cdeb 55 extern int len;
baxterja 73:b059b5bdc664 56 extern uint16_t static_input_array0[];//ADC 0(swaps between a0 and a1. Used to measure current)
baxterja 73:b059b5bdc664 57 extern uint16_t static_input_array1[];//ADC 1(measures the voltage between the probe and ground)
baxterja 73:b059b5bdc664 58 extern uint16_t static_output_array0[];//DAC outputs whatever wave form we want.
baxterja 73:b059b5bdc664 59 extern uint16_t sampling_status;//used to determine when adc's are done reading.
bmazzeo 57:7b8c49e1c1f6 60
baxterja 85:f1be018aacac 61 //#define INPUT_ARRAY_SIZE 32
baxterja 85:f1be018aacac 62 //#define DECIMATION_FACTOR 8
baxterja 85:f1be018aacac 63 //#define DEMODULATED_SIGNAL_LENGTH 64
baxterja 73:b059b5bdc664 64
baxterja 73:b059b5bdc664 65 float *input_50k[8];
baxterja 73:b059b5bdc664 66
baxterja 85:f1be018aacac 67
baxterja 85:f1be018aacac 68
baxterja 73:b059b5bdc664 69
baxterja 73:b059b5bdc664 70
baxterja 84:5b4466dd2326 71 //190Hz 528
baxterja 84:5b4466dd2326 72 //312Hz 320
baxterja 84:5b4466dd2326 73 //431Hz 232
baxterja 84:5b4466dd2326 74 //481Hz 208
baxterja 84:5b4466dd2326 75 //568Hz 176
baxterja 85:f1be018aacac 76 //#define pre_compute_length 208
baxterja 85:f1be018aacac 77 //#define CarrierFrequency (100000/pre_compute_length)
baxterja 85:f1be018aacac 78 const int pre_compute_length = PRE_COMPUTE_LENGTH;
baxterja 85:f1be018aacac 79 const float CarrierFrequency = (100000/pre_compute_length);
baxterja 69:014d4bbd4e03 80 #define SAMPLEFREQUENCY 100000
baxterja 85:f1be018aacac 81
baxterja 73:b059b5bdc664 82 uint16_t out_val_pre[pre_compute_length]; //used to write values to the dac
baxterja 69:014d4bbd4e03 83 float twopi = 3.14159265359 * 2;
baxterja 69:014d4bbd4e03 84
baxterja 69:014d4bbd4e03 85
baxterja 69:014d4bbd4e03 86 void pre_compute_tables() {
baxterja 69:014d4bbd4e03 87 // This function will precompute the cos and sin tables used in the rest of the program
baxterja 69:014d4bbd4e03 88 for(int precompute_counter = 0; precompute_counter < pre_compute_length; precompute_counter++){
baxterja 84:5b4466dd2326 89 out_val_pre[precompute_counter] = (int) ((cos(twopi * CarrierFrequency /SAMPLEFREQUENCY * precompute_counter)) * 2046.0 + 2048.0);//12 bit cos wave
baxterja 69:014d4bbd4e03 90 }
baxterja 73:b059b5bdc664 91
baxterja 73:b059b5bdc664 92
baxterja 69:014d4bbd4e03 93 }
baxterja 69:014d4bbd4e03 94
baxterja 85:f1be018aacac 95
emilmont 7:65188f4a8c25 96 int main() {
baxterja 79:5f24cfd685d8 97
timmey9 22:523e316cbe70 98 led_blue = 1;
timmey9 35:df40c4566826 99 led_green = 1;
timmey9 18:b17ddeeb1c09 100 led_red = 1;
timmey9 34:44cc9b76a507 101
baxterja 79:5f24cfd685d8 102 pre_compute_tables();
baxterja 79:5f24cfd685d8 103 precompute_tables();
baxterja 79:5f24cfd685d8 104 //turn off all LEDs
baxterja 73:b059b5bdc664 105
baxterja 84:5b4466dd2326 106 //slight change.
baxterja 79:5f24cfd685d8 107
baxterja 79:5f24cfd685d8 108
baxterja 73:b059b5bdc664 109
baxterja 73:b059b5bdc664 110 pc.baud(230400);
baxterja 85:f1be018aacac 111 /*
baxterja 79:5f24cfd685d8 112 //pc.printf("High: %x Mid: %x Low: %x",SIM->UIDH,SIM->UIDML,SIM->UIDL);
baxterja 84:5b4466dd2326 113 if(SIM->UIDH == 0x2effff && SIM->UIDML == 0x4e453154 && SIM->UIDL == 0x1004001e) probe_number = 6;
baxterja 80:7a4856c596fc 114 else if(SIM->UIDH == 0x1cffff && SIM->UIDML == 0x4e453215 && SIM->UIDL == 0x700b0003) probe_number = 2;
baxterja 80:7a4856c596fc 115 else if(SIM->UIDH == 0x2effff && SIM->UIDML == 0x4e453215 && SIM->UIDL == 0x700b0021) probe_number = 3;
baxterja 80:7a4856c596fc 116 else if(SIM->UIDH == 0x14ffff && SIM->UIDML == 0x4e453154 && SIM->UIDL == 0x5009002b) probe_number = 4;
baxterja 84:5b4466dd2326 117 else if(SIM->UIDH == 0x12ffff && SIM->UIDML == 0x4e453103 && SIM->UIDL == 0x60010030) probe_number = 1;
baxterja 84:5b4466dd2326 118 else if(SIM->UIDH == 0x10ffff && SIM->UIDML == 0x4e453105 && SIM->UIDL == 0x100b0031) probe_number = 5;
baxterja 80:7a4856c596fc 119 else if(SIM->UIDH == 0x19ffff && SIM->UIDML == 0x4d441504 && SIM->UIDL == 0x90110031) probe_number = 7;//this FRDM board had a bad usb connection
baxterja 80:7a4856c596fc 120 else
baxterja 80:7a4856c596fc 121 {
baxterja 80:7a4856c596fc 122 pc.printf("FRDM BOARD NOT RECOGNIZED. Here is the new ID:\n\r");
baxterja 80:7a4856c596fc 123 pc.printf("High: %x Mid: %x Low: %x\n\r",SIM->UIDH,SIM->UIDML,SIM->UIDL);
baxterja 80:7a4856c596fc 124 probe_number = 6;
baxterja 80:7a4856c596fc 125 }
baxterja 85:f1be018aacac 126 */
baxterja 80:7a4856c596fc 127 pc.printf("PROBE #%d",probe_number);
baxterja 80:7a4856c596fc 128 wait(1.0f);
baxterja 85:f1be018aacac 129
baxterja 79:5f24cfd685d8 130 int DAC_COUNTER = 0;
baxterja 85:f1be018aacac 131
baxterja 78:10b2916b8f5c 132
baxterja 85:f1be018aacac 133 //Filters used in program. Coefficients generated using matlab FDA tool
baxterja 78:10b2916b8f5c 134 //Fs = 100000, FPass = 1500, FStop = 4500, -40db
baxterja 78:10b2916b8f5c 135 float Coeffs_100k[64] = {0.00368762746013400, -0.00390835182721185, -0.00352466159836192, -0.00378044968164769, -0.00434746630849834, -0.00502920744118478, -0.00570543677799210, -0.00628464650365093, -0.00668691824262464, -0.00683917139561193, -0.00667505410229485, -0.00613341508706847, -0.00516232410283893, -0.00371868951723358, -0.00177417571286934, 0.000685809876396031, 0.00365648516386919, 0.00711658039739992, 0.0110234409358280, 0.0153179248880130, 0.0199204447074274, 0.0247385052308702, 0.0296636617979935, 0.0345813441342327, 0.0393672306749833, 0.0438989152744108, 0.0480511039644129, 0.0517108728403463, 0.0547710075854812, 0.0571509837193129, 0.0587848911618005, 0.0596038010741317, 0.0596038010741317, 0.0587848911618005, 0.0571509837193129, 0.0547710075854812, 0.0517108728403463, 0.0480511039644129, 0.0438989152744108, 0.0393672306749833, 0.0345813441342327, 0.0296636617979935, 0.0247385052308702, 0.0199204447074274, 0.0153179248880130, 0.0110234409358280, 0.00711658039739992, 0.00365648516386919, 0.000685809876396031, -0.00177417571286934, -0.00371868951723358, -0.00516232410283893, -0.00613341508706847, -0.00667505410229485, -0.00683917139561193, -0.00668691824262464, -0.00628464650365093, -0.00570543677799210, -0.00502920744118478, -0.00434746630849834, -0.00378044968164769, -0.00352466159836192, -0.00390835182721185, 0.00368762746013400};
baxterja 78:10b2916b8f5c 136 //FS = 12500, Fpass = 100 Fstop 595 -50 db, picks on 1KHz signal
baxterja 78:10b2916b8f5c 137 float Coeffs_12500[64] = {-0.00222124676855946, -0.00163176345559825, -0.00214372257722720, -0.00268653504526241, -0.00323192624665395, -0.00374368158669702, -0.00417907979321931, -0.00449328006488225, -0.00463658803501384, -0.00455550760053878, -0.00419848205106894, -0.00352024663122325, -0.00247317556122392, -0.00102679426345247, 0.000845020041268567, 0.00315252023354445, 0.00589238992243332, 0.00904676286706929, 0.0125796442526745, 0.0164391331165775, 0.0205582919104753, 0.0248562683452381, 0.0292399202971496, 0.0336089813533200, 0.0378556202824368, 0.0418719268554270, 0.0455508704073759, 0.0487915537931733, 0.0515035460002020, 0.0536094934833149, 0.0550483048257919, 0.0557785148825623, 0.0557785148825623, 0.0550483048257919, 0.0536094934833149, 0.0515035460002020, 0.0487915537931733, 0.0455508704073759, 0.0418719268554270, 0.0378556202824368, 0.0336089813533200, 0.0292399202971496, 0.0248562683452381, 0.0205582919104753, 0.0164391331165775, 0.0125796442526745, 0.00904676286706929, 0.00589238992243332, 0.00315252023354445, 0.000845020041268567, -0.00102679426345247, -0.00247317556122392, -0.00352024663122325, -0.00419848205106894, -0.00455550760053878, -0.00463658803501384, -0.00449328006488225, -0.00417907979321931, -0.00374368158669702, -0.00323192624665395, -0.00268653504526241, -0.00214372257722720, -0.00163176345559825, -0.00222124676855946};
baxterja 78:10b2916b8f5c 138 //Fs = 1562.5 Fpass = 100, FStop = 195.6, null at 200 Hz
baxterja 78:10b2916b8f5c 139 float Coeffs_1563[32] = {-0.00296990567211633, 0.00784631357544163, 0.00955642274001412, 0.0105078670942049, 0.00746432577935901, -0.000715888274492355, -0.0127656342089486, -0.0248578255670040, -0.0313597093257934, -0.0264804428976321, -0.00639056527392095, 0.0289495639622991, 0.0749846381319702, 0.123239880157668, 0.163403327438059, 0.186215627611441, 0.186215627611441, 0.163403327438059, 0.123239880157668, 0.0749846381319702, 0.0289495639622991, -0.00639056527392095, -0.0264804428976321, -0.0313597093257934, -0.0248578255670040, -0.0127656342089486, -0.000715888274492355, 0.00746432577935901, 0.0105078670942049, 0.00955642274001412, 0.00784631357544163, -0.00296990567211633};
baxterja 78:10b2916b8f5c 140 //Fs = 781.25, Fpass = 60, Fstop = 120, -50 Db
baxterja 78:10b2916b8f5c 141 float Coeffs_782[32] = {-0.00423132648651131, -0.00413085595827858, -0.00212955364173648, 0.00345345707266939, 0.0105870277845968, 0.0147191914630408, 0.0108878516242339, -0.00283458314983071, -0.0224398052018669, -0.0377493805765767, -0.0358474685211045, -0.00721456868509791, 0.0483564412276129, 0.119338204671425, 0.185468453617916, 0.225354002914126, 0.225354002914126, 0.185468453617916, 0.119338204671425, 0.0483564412276129, -0.00721456868509791, -0.0358474685211045, -0.0377493805765767, -0.0224398052018669, -0.00283458314983071, 0.0108878516242339, 0.0147191914630408, 0.0105870277845968, 0.00345345707266939, -0.00212955364173648, -0.00413085595827858, -0.00423132648651131};
baxterja 76:704fc58ffcd0 142
baxterja 73:b059b5bdc664 143 float Coeffs[20] = {0.0328368433284673, 0.0237706090075265, 0.0309894695180997, 0.0385253568846695, 0.0459996974310349, 0.0530165318016261, 0.0591943866845610, 0.0641755708098907, 0.0676960677594849, 0.0694621149975389, 0.0694621149975389, 0.0676960677594849, 0.0641755708098907, 0.0591943866845610, 0.0530165318016261, 0.0459996974310349, 0.0385253568846695, 0.0309894695180997, 0.0237706090075265, 0.0328368433284673};
baxterja 73:b059b5bdc664 144 float Coeffs2[20] = {-0.00506451294187997, -0.00824932319607346, -0.00986370066237912, -0.00518913235010027, 0.00950858650162284, 0.0357083149022659, 0.0711557142019980, 0.109659494661247, 0.142586101123340, 0.161603335553589, 0.161603335553589, 0.142586101123340, 0.109659494661247, 0.0711557142019980, 0.0357083149022659, 0.00950858650162284, -0.00518913235010027, -0.00986370066237912, -0.00824932319607346, -0.00506451294187997};
baxterja 73:b059b5bdc664 145
baxterja 85:f1be018aacac 146 //note I allocate space for 4 adc inputs, but usually I only use 2
baxterja 73:b059b5bdc664 147 for(int i = 0; i < 8; i++)
baxterja 77:1ee17a9e9f8b 148 input_50k[i] = new float[64];//each array represents the input of the adcs
baxterja 78:10b2916b8f5c 149
baxterja 85:f1be018aacac 150 //filters(const int num_filters, const int DECIMATION, filters * f, const int block_size, const int numTaps, float coeffs[], int demodulate_after)
baxterja 85:f1be018aacac 151 //num filters: usually 4. In-phase and quadrature phase for both voltage and current
baxterja 85:f1be018aacac 152 //DECIMATION: Decimation Factor
baxterja 85:f1be018aacac 153 //f: the filter after current filter.
baxterja 85:f1be018aacac 154 //block_size: block size of each filter command should be an integer multiple of DECIMATION
baxterja 85:f1be018aacac 155 //Flag noting rather or not to demodulate, and if so what frequency to demodulate at
baxterja 78:10b2916b8f5c 156 filters f4 = filters(4, 8, NULL, 8, 32, Coeffs_782,DEMOD_No_Demod);
baxterja 78:10b2916b8f5c 157 filters f3 = filters(4, 2, &f4, 4, 32, Coeffs_1563,DEMOD_No_Demod);
baxterja 78:10b2916b8f5c 158 filters f2 = filters(4, 8, &f3, 8, 64, Coeffs_12500,DEMOD_No_Demod);
baxterja 78:10b2916b8f5c 159 filters f1 = filters(2, 8, &f2, 64, 64, Coeffs_100k,DEMOD_200HZ);
baxterja 73:b059b5bdc664 160
baxterja 84:5b4466dd2326 161 /*
baxterja 78:10b2916b8f5c 162 filters f4_b = filters(4, 8, NULL, 8, 32, Coeffs_782,DEMOD_No_Demod);
baxterja 78:10b2916b8f5c 163 filters f3_b = filters(4, 2, &f4_b, 4, 32, Coeffs_1563,DEMOD_No_Demod);
baxterja 78:10b2916b8f5c 164 filters f2_b = filters(4, 8, &f3_b, 8, 64, Coeffs_12500,DEMOD_No_Demod);
baxterja 78:10b2916b8f5c 165 filters f1_b = filters(2, 8, &f2_b, 64, 64, Coeffs_100k,DEMOD_1000HZ);
baxterja 84:5b4466dd2326 166 */
baxterja 78:10b2916b8f5c 167 //filters f_pre = filters(2, 2, &f1, 64, 64, Coeffs_50k,false);
baxterja 69:014d4bbd4e03 168
baxterja 73:b059b5bdc664 169 //float output_print_buffer[PRINT_BUFFER_LENGTH];//used to store the adc0 values(current measurment)
baxterja 73:b059b5bdc664 170 //float output_print_buffer2[PRINT_BUFFER_LENGTH];//used to store the adc0 values(voltage measurment)
baxterja 70:8cd7a8a2c153 171 int print_buffer_count = 0;
baxterja 70:8cd7a8a2c153 172
bmazzeo 66:72c5c24e532c 173 pdb_init(); // Initalize PDB
bmazzeo 66:72c5c24e532c 174 dac_init(); // initializes DAC
timmey9 45:d591d138cdeb 175 adc_init(); // always initialize adc before dma
bmazzeo 53:83a90a47c1fd 176 pc.printf("ADC Initialized\r\n");
baxterja 74:ebc9f09fda11 177 dma_init2(); // initializes DMAs
bmazzeo 55:2526b3317bc8 178 dma_reset(); // This clears any DMA triggers that may have gotten things into a different state
bmazzeo 67:ec0c58490ce6 179 pc.printf("Buffer Size: %i\r\n", len);
bmazzeo 54:1697dc574b96 180
timmey9 46:a015ebf4663b 181 led_green = 1;
baxterja 79:5f24cfd685d8 182 pc.printf("High: %x Mid: %x Low: %x",SIM->UIDH,SIM->UIDML,SIM->UIDL);
timmey9 40:bd6d8c35e822 183 pc.printf("\r\n\r\n\r\n");
timmey9 37:8bdc71f3e874 184
bmazzeo 64:bb4a4bd57681 185 pdb_start();
baxterja 84:5b4466dd2326 186 bool is_actively_printing = false;
baxterja 84:5b4466dd2326 187 char read_in_character = 'a';
baxterja 86:850351993d88 188 //while(print_buffer_count<PRINT_BUFFER_LENGTH)
baxterja 86:850351993d88 189 timer.start();
baxterja 73:b059b5bdc664 190 while(!GATHER_STATISTICS||print_buffer_count<PRINT_BUFFER_LENGTH)
baxterja 73:b059b5bdc664 191 {
baxterja 79:5f24cfd685d8 192 if(pc.readable())//if the python code has sent any characters recently
baxterja 79:5f24cfd685d8 193 {
baxterja 85:f1be018aacac 194 while(pc.readable())//if there is a Keyboard input
baxterja 84:5b4466dd2326 195 {
baxterja 85:f1be018aacac 196 read_in_character = pc.getc();// read the keyboard input
baxterja 85:f1be018aacac 197 if (read_in_character == 'R')//start printing
baxterja 86:850351993d88 198 {
baxterja 86:850351993d88 199 timer.reset();
baxterja 86:850351993d88 200 //timer.start();
baxterja 84:5b4466dd2326 201 is_actively_printing = true;
baxterja 86:850351993d88 202 }
baxterja 85:f1be018aacac 203 else if (read_in_character == 'S')//Stop printing
baxterja 86:850351993d88 204 {
baxterja 86:850351993d88 205 //timer.stop();
baxterja 84:5b4466dd2326 206 is_actively_printing = false;
baxterja 86:850351993d88 207 }
baxterja 85:f1be018aacac 208 else if (read_in_character == 'P')//return probe number
baxterja 84:5b4466dd2326 209 pc.printf("p%d",probe_number);
baxterja 86:850351993d88 210 else if (read_in_character == 'I')//return probe number
baxterja 86:850351993d88 211 pc.printf("IMPEDANCE");
baxterja 86:850351993d88 212
baxterja 84:5b4466dd2326 213 }
baxterja 84:5b4466dd2326 214
baxterja 79:5f24cfd685d8 215 }
baxterja 79:5f24cfd685d8 216
baxterja 85:f1be018aacac 217 while(sampling_status == 0)//wait until the ADCs read a new values
baxterja 73:b059b5bdc664 218 {
baxterja 85:f1be018aacac 219 status_0 = 1; //used for debugging allows to see utilization
baxterja 85:f1be018aacac 220 print_filter_data(&pc,is_actively_printing);//while waiting for new samples print as much data as possible
baxterja 75:8bb94685c80b 221 //Thread::wait(.0001);
baxterja 73:b059b5bdc664 222 }
baxterja 73:b059b5bdc664 223 sampling_status = 0;//sets sampling status to 0. DMA sets it to one once ADCs sample
baxterja 73:b059b5bdc664 224 status_0 = 0;//Tied to D0. use an O-scope to measure how much free time there is to play with.
baxterja 73:b059b5bdc664 225 status_1 = 1;//Tied to D1. use an O-scope to measure how much time the processing takes
baxterja 73:b059b5bdc664 226
baxterja 77:1ee17a9e9f8b 227 for(int i = 0; i < len; i++)
bmazzeo 61:a56cca07d4a6 228 {
baxterja 73:b059b5bdc664 229 static_output_array0[i] = out_val_pre[DAC_COUNTER];//DAC output
baxterja 73:b059b5bdc664 230 DAC_COUNTER++;//Counter to kepp track of where we are in our precomputed table
baxterja 73:b059b5bdc664 231 if (DAC_COUNTER>=pre_compute_length) {DAC_COUNTER = 0;}//wrap around the counter
baxterja 77:1ee17a9e9f8b 232 //static_output_array0[i+1] = out_val_pre[DAC_COUNTER];//DAC output
baxterja 77:1ee17a9e9f8b 233 //DAC_COUNTER++;//Counter to kepp track of where we are in our precomputed table
baxterja 77:1ee17a9e9f8b 234 //if (DAC_COUNTER>=pre_compute_length) {DAC_COUNTER = 0;}//wrap around the counter
baxterja 73:b059b5bdc664 235
baxterja 85:f1be018aacac 236 //Note currently we are sampling 2 adc at 100 KHz. If desired you can also sample 4 ADCs at 50 KHz
baxterja 77:1ee17a9e9f8b 237 input_50k[1][i]=float(static_input_array1[i]);
baxterja 77:1ee17a9e9f8b 238 // input_50k[3][i/2]=static_input_array1[i+1];
baxterja 77:1ee17a9e9f8b 239 input_50k[0][i]=float(static_input_array0[i]);
baxterja 77:1ee17a9e9f8b 240 //input_50k[2][i/2]=static_input_array0[i+1];
baxterja 73:b059b5bdc664 241
baxterja 73:b059b5bdc664 242 }//End of for loop going throught the buffer of adc samples
baxterja 85:f1be018aacac 243
baxterja 85:f1be018aacac 244
baxterja 78:10b2916b8f5c 245 f1.input(input_50k,64,DEMOD_200HZ);
baxterja 84:5b4466dd2326 246 //f1_b.input(input_50k,64,DEMOD_1000HZ);
baxterja 77:1ee17a9e9f8b 247 //status_3 = 1;
baxterja 77:1ee17a9e9f8b 248 //pc.printf("Y");
baxterja 77:1ee17a9e9f8b 249 //status_3 = 0;
baxterja 73:b059b5bdc664 250
baxterja 70:8cd7a8a2c153 251
baxterja 73:b059b5bdc664 252 status_1 = 0;//turn off D1 used in deterimining how long processing is taking
baxterja 85:f1be018aacac 253
baxterja 73:b059b5bdc664 254 }//end of while loop
baxterja 73:b059b5bdc664 255
baxterja 85:f1be018aacac 256 //prints ADC buffer if desired
baxterja 85:f1be018aacac 257
baxterja 73:b059b5bdc664 258 //for(int i = 0; i<PRINT_BUFFER_LENGTH; i++)//print all the adc values measured
baxterja 73:b059b5bdc664 259 //{
baxterja 73:b059b5bdc664 260 // printf("%.1f %.1f\n\r",output_print_buffer[i],output_print_buffer2[i]);
baxterja 73:b059b5bdc664 261 //}
baxterja 73:b059b5bdc664 262
baxterja 70:8cd7a8a2c153 263
bmazzeo 61:a56cca07d4a6 264 }
bmazzeo 63:7903a33e2fd4 265