DCS_TEAM / Mbed 2 deprecated Chemical_Sensor_DMA

Dependencies:   mbed

Dependents:   DCS_FINAL_CODE

Fork of Chemical_Sensor_DMA by Jared Baxter

Committer:
baxterja
Date:
Sun Sep 06 04:23:51 2015 +0000
Revision:
0:3927c6d8ad1f
Child:
1:f0a5690db73f
Chemical Sensing program

Who changed what in which revision?

UserRevisionLine numberNew contents of line
baxterja 0:3927c6d8ad1f 1
baxterja 0:3927c6d8ad1f 2 // TODO:
baxterja 0:3927c6d8ad1f 3 #include "mbed.h"
baxterja 0:3927c6d8ad1f 4 #include <string>
baxterja 0:3927c6d8ad1f 5
baxterja 0:3927c6d8ad1f 6 #include <stdio.h>
baxterja 0:3927c6d8ad1f 7 #include "PeripheralNames.h"
baxterja 0:3927c6d8ad1f 8 #include "PeripheralPins.h"
baxterja 0:3927c6d8ad1f 9 #include "fsl_adc_hal.h"
baxterja 0:3927c6d8ad1f 10 #include "fsl_clock_manager.h"
baxterja 0:3927c6d8ad1f 11 #include "fsl_dspi_hal.h"
baxterja 0:3927c6d8ad1f 12
baxterja 0:3927c6d8ad1f 13
baxterja 0:3927c6d8ad1f 14
baxterja 0:3927c6d8ad1f 15 Serial pc(USBTX, USBRX);
baxterja 0:3927c6d8ad1f 16
baxterja 0:3927c6d8ad1f 17 /*
baxterja 0:3927c6d8ad1f 18 #if DEBUG
baxterja 0:3927c6d8ad1f 19 #define DEBUG_PRINT(x) pc.printf(x)
baxterja 0:3927c6d8ad1f 20 #else
baxterja 0:3927c6d8ad1f 21 #define DEBUG_PRINT(x) do {} while(0)
baxterja 0:3927c6d8ad1f 22 #endif
baxterja 0:3927c6d8ad1f 23 */
baxterja 0:3927c6d8ad1f 24 DigitalOut led_red(LED_RED);
baxterja 0:3927c6d8ad1f 25 DigitalOut led_green(LED_GREEN);
baxterja 0:3927c6d8ad1f 26 DigitalOut led_blue(LED_BLUE);
baxterja 0:3927c6d8ad1f 27
baxterja 0:3927c6d8ad1f 28
baxterja 0:3927c6d8ad1f 29 #define MAX_FADC 6000000
baxterja 0:3927c6d8ad1f 30
baxterja 0:3927c6d8ad1f 31 #define TimerInterruptInMicroSeconds 25 // This is for 40 kHz
baxterja 0:3927c6d8ad1f 32
baxterja 0:3927c6d8ad1f 33
baxterja 0:3927c6d8ad1f 34 #define CarrierFrequency 190
baxterja 0:3927c6d8ad1f 35
baxterja 0:3927c6d8ad1f 36 #define ISR_counter_loop_reset 4 // 10 kHz sampling of the signal
baxterja 0:3927c6d8ad1f 37
baxterja 0:3927c6d8ad1f 38 int ISR_counter = 1;
baxterja 0:3927c6d8ad1f 39
baxterja 0:3927c6d8ad1f 40 #define MaxNumSamples 0 //set to 0 if want continuous sampling (i.e. run forever)
baxterja 0:3927c6d8ad1f 41 #define NumSamplesAverageInADC 32 //hardware averaging default is 2. values 0..32. Higher values reduce noise and maximum sample rate
baxterja 0:3927c6d8ad1f 42 #define NumADCbits 16
baxterja 0:3927c6d8ad1f 43
baxterja 0:3927c6d8ad1f 44 int CyclesInState = 0;
baxterja 0:3927c6d8ad1f 45 // While 32 is the minimum, it seems to take a few cycles to get things to work right. 32 + 18 + 18 + 18
baxterja 0:3927c6d8ad1f 46 #define PreCalculateCycles 256
baxterja 0:3927c6d8ad1f 47 #define NumCalculatedAverages 500
baxterja 0:3927c6d8ad1f 48
baxterja 0:3927c6d8ad1f 49 AnalogOut WaveOut(DAC0_OUT);
baxterja 0:3927c6d8ad1f 50 AnalogIn WaveIn1(A0);
baxterja 0:3927c6d8ad1f 51 AnalogIn WaveIn2(A2);
baxterja 0:3927c6d8ad1f 52
baxterja 0:3927c6d8ad1f 53
baxterja 0:3927c6d8ad1f 54 double previousTime = 0;
baxterja 0:3927c6d8ad1f 55
baxterja 0:3927c6d8ad1f 56
baxterja 0:3927c6d8ad1f 57 volatile unsigned long counter = 0; //keep track of how many times the timer interrupt executes
baxterja 0:3927c6d8ad1f 58
baxterja 0:3927c6d8ad1f 59
baxterja 0:3927c6d8ad1f 60 volatile int phase_counter = 0;
baxterja 0:3927c6d8ad1f 61 float twopi = 3.14159265359 * 2;
baxterja 0:3927c6d8ad1f 62
baxterja 0:3927c6d8ad1f 63 #define pre_compute_length 4000
baxterja 0:3927c6d8ad1f 64 float i_mod_pre[pre_compute_length];
baxterja 0:3927c6d8ad1f 65 float q_mod_pre[pre_compute_length];
baxterja 0:3927c6d8ad1f 66 int out_val_pre[pre_compute_length];
baxterja 0:3927c6d8ad1f 67
baxterja 0:3927c6d8ad1f 68 float current_i_mod;
baxterja 0:3927c6d8ad1f 69 float current_q_mod;
baxterja 0:3927c6d8ad1f 70
baxterja 0:3927c6d8ad1f 71
baxterja 0:3927c6d8ad1f 72 #define lp_fir_length 256
baxterja 0:3927c6d8ad1f 73 #define bp_fir_length 256
baxterja 0:3927c6d8ad1f 74
baxterja 0:3927c6d8ad1f 75 float x_0_i[lp_fir_length];
baxterja 0:3927c6d8ad1f 76 float x_0_q[lp_fir_length];
baxterja 0:3927c6d8ad1f 77 float x_1_i[lp_fir_length];
baxterja 0:3927c6d8ad1f 78 float x_1_q[lp_fir_length];
baxterja 0:3927c6d8ad1f 79
baxterja 0:3927c6d8ad1f 80 float real_ip = 0;
baxterja 0:3927c6d8ad1f 81 float real_ip_total = 0;
baxterja 0:3927c6d8ad1f 82 float imag_ip = 0;
baxterja 0:3927c6d8ad1f 83 float imag_ip_total = 0;
baxterja 0:3927c6d8ad1f 84 float y_0_squared = 0;
baxterja 0:3927c6d8ad1f 85 float y_1_squared = 0;
baxterja 0:3927c6d8ad1f 86
baxterja 0:3927c6d8ad1f 87 int max_0 = -1;
baxterja 0:3927c6d8ad1f 88 int min_0 = 65536;
baxterja 0:3927c6d8ad1f 89 int max_1 = -1;
baxterja 0:3927c6d8ad1f 90 int min_1 = 65536;
baxterja 0:3927c6d8ad1f 91
baxterja 0:3927c6d8ad1f 92
baxterja 0:3927c6d8ad1f 93 // Coefficients for FIR low-pass filter
baxterja 0:3927c6d8ad1f 94 // Order: 127
baxterja 0:3927c6d8ad1f 95 // Fs = 10000
baxterja 0:3927c6d8ad1f 96 // Fpass = 5
baxterja 0:3927c6d8ad1f 97 // Fstop = 50
baxterja 0:3927c6d8ad1f 98 // Density Factor 20
baxterja 0:3927c6d8ad1f 99 float lp_filter_coeff[lp_fir_length] = {
baxterja 0:3927c6d8ad1f 100 0.0861805974737537,
baxterja 0:3927c6d8ad1f 101 0.00194058236914933,
baxterja 0:3927c6d8ad1f 102 0.00196838475539374,
baxterja 0:3927c6d8ad1f 103 0.00198494885848217,
baxterja 0:3927c6d8ad1f 104 0.00201327315570587,
baxterja 0:3927c6d8ad1f 105 0.00202912020658817,
baxterja 0:3927c6d8ad1f 106 0.00205837690374429,
baxterja 0:3927c6d8ad1f 107 0.00207476466732652,
baxterja 0:3927c6d8ad1f 108 0.00210551867296513,
baxterja 0:3927c6d8ad1f 109 0.00212232982776793,
baxterja 0:3927c6d8ad1f 110 0.00215469918380619,
baxterja 0:3927c6d8ad1f 111 0.00217146660668663,
baxterja 0:3927c6d8ad1f 112 0.00220558455176705,
baxterja 0:3927c6d8ad1f 113 0.00222092552588268,
baxterja 0:3927c6d8ad1f 114 0.00225605241370255,
baxterja 0:3927c6d8ad1f 115 0.00226646783939495,
baxterja 0:3927c6d8ad1f 116 0.00230092287432329,
baxterja 0:3927c6d8ad1f 117 0.00229715073318613,
baxterja 0:3927c6d8ad1f 118 0.00232623464517315,
baxterja 0:3927c6d8ad1f 119 0.00225358157041652,
baxterja 0:3927c6d8ad1f 120 0.00237497949175132,
baxterja 0:3927c6d8ad1f 121 0.00240962754549243,
baxterja 0:3927c6d8ad1f 122 0.00239489319998042,
baxterja 0:3927c6d8ad1f 123 0.00243168327631056,
baxterja 0:3927c6d8ad1f 124 0.00244169878557599,
baxterja 0:3927c6d8ad1f 125 0.00247033152393311,
baxterja 0:3927c6d8ad1f 126 0.00248484040428462,
baxterja 0:3927c6d8ad1f 127 0.00250942587726843,
baxterja 0:3927c6d8ad1f 128 0.00252568320446658,
baxterja 0:3927c6d8ad1f 129 0.00254761155808375,
baxterja 0:3927c6d8ad1f 130 0.00256464167177514,
baxterja 0:3927c6d8ad1f 131 0.00258446154111681,
baxterja 0:3927c6d8ad1f 132 0.00260244294098803,
baxterja 0:3927c6d8ad1f 133 0.00262131473283837,
baxterja 0:3927c6d8ad1f 134 0.00264164776893963,
baxterja 0:3927c6d8ad1f 135 0.00266111980952651,
baxterja 0:3927c6d8ad1f 136 0.00268646307379128,
baxterja 0:3927c6d8ad1f 137 0.00270761719256829,
baxterja 0:3927c6d8ad1f 138 0.00274205375475237,
baxterja 0:3927c6d8ad1f 139 0.00274149898919641,
baxterja 0:3927c6d8ad1f 140 0.00274945418608348,
baxterja 0:3927c6d8ad1f 141 0.00279082346790514,
baxterja 0:3927c6d8ad1f 142 0.00279778186887203,
baxterja 0:3927c6d8ad1f 143 0.00282250662520772,
baxterja 0:3927c6d8ad1f 144 0.00283603752336853,
baxterja 0:3927c6d8ad1f 145 0.00285874465133605,
baxterja 0:3927c6d8ad1f 146 0.00287407059058428,
baxterja 0:3927c6d8ad1f 147 0.00289570516626933,
baxterja 0:3927c6d8ad1f 148 0.00291199026392523,
baxterja 0:3927c6d8ad1f 149 0.00293311428662787,
baxterja 0:3927c6d8ad1f 150 0.00295009345796840,
baxterja 0:3927c6d8ad1f 151 0.00297044279838009,
baxterja 0:3927c6d8ad1f 152 0.00298714691522817,
baxterja 0:3927c6d8ad1f 153 0.00300581268506110,
baxterja 0:3927c6d8ad1f 154 0.00302120747953588,
baxterja 0:3927c6d8ad1f 155 0.00303732312039544,
baxterja 0:3927c6d8ad1f 156 0.00305157040082656,
baxterja 0:3927c6d8ad1f 157 0.00306643736356742,
baxterja 0:3927c6d8ad1f 158 0.00308869428115324,
baxterja 0:3927c6d8ad1f 159 0.00311307778862543,
baxterja 0:3927c6d8ad1f 160 0.00311424353468359,
baxterja 0:3927c6d8ad1f 161 0.00313896920891965,
baxterja 0:3927c6d8ad1f 162 0.00315257957066846,
baxterja 0:3927c6d8ad1f 163 0.00317063676755790,
baxterja 0:3927c6d8ad1f 164 0.00318404202174892,
baxterja 0:3927c6d8ad1f 165 0.00320106537708682,
baxterja 0:3927c6d8ad1f 166 0.00321431574769385,
baxterja 0:3927c6d8ad1f 167 0.00323043068211672,
baxterja 0:3927c6d8ad1f 168 0.00324309082121968,
baxterja 0:3927c6d8ad1f 169 0.00325830171776266,
baxterja 0:3927c6d8ad1f 170 0.00327070521989578,
baxterja 0:3927c6d8ad1f 171 0.00328578417067009,
baxterja 0:3927c6d8ad1f 172 0.00329857943310240,
baxterja 0:3927c6d8ad1f 173 0.00331411607506732,
baxterja 0:3927c6d8ad1f 174 0.00332746621803916,
baxterja 0:3927c6d8ad1f 175 0.00334278731970893,
baxterja 0:3927c6d8ad1f 176 0.00335490587728655,
baxterja 0:3927c6d8ad1f 177 0.00336582204821038,
baxterja 0:3927c6d8ad1f 178 0.00337340614667260,
baxterja 0:3927c6d8ad1f 179 0.00339593158768486,
baxterja 0:3927c6d8ad1f 180 0.00340201380261714,
baxterja 0:3927c6d8ad1f 181 0.00341358117591052,
baxterja 0:3927c6d8ad1f 182 0.00342527970126076,
baxterja 0:3927c6d8ad1f 183 0.00343729081346655,
baxterja 0:3927c6d8ad1f 184 0.00344788640610150,
baxterja 0:3927c6d8ad1f 185 0.00345950626709297,
baxterja 0:3927c6d8ad1f 186 0.00346977560789619,
baxterja 0:3927c6d8ad1f 187 0.00348137861989829,
baxterja 0:3927c6d8ad1f 188 0.00349145780595203,
baxterja 0:3927c6d8ad1f 189 0.00350258155909523,
baxterja 0:3927c6d8ad1f 190 0.00351179661900564,
baxterja 0:3927c6d8ad1f 191 0.00352191431883533,
baxterja 0:3927c6d8ad1f 192 0.00352996025917487,
baxterja 0:3927c6d8ad1f 193 0.00353918710384162,
baxterja 0:3927c6d8ad1f 194 0.00354686935571502,
baxterja 0:3927c6d8ad1f 195 0.00355665353091388,
baxterja 0:3927c6d8ad1f 196 0.00356587002173744,
baxterja 0:3927c6d8ad1f 197 0.00357689031711855,
baxterja 0:3927c6d8ad1f 198 0.00357801462512765,
baxterja 0:3927c6d8ad1f 199 0.00359006856669697,
baxterja 0:3927c6d8ad1f 200 0.00359950458629560,
baxterja 0:3927c6d8ad1f 201 0.00360494297850754,
baxterja 0:3927c6d8ad1f 202 0.00361233039031660,
baxterja 0:3927c6d8ad1f 203 0.00361922292724758,
baxterja 0:3927c6d8ad1f 204 0.00362591596791954,
baxterja 0:3927c6d8ad1f 205 0.00363226321494882,
baxterja 0:3927c6d8ad1f 206 0.00363786374022990,
baxterja 0:3927c6d8ad1f 207 0.00364352288365460,
baxterja 0:3927c6d8ad1f 208 0.00364862849480178,
baxterja 0:3927c6d8ad1f 209 0.00365423915635453,
baxterja 0:3927c6d8ad1f 210 0.00365927328685460,
baxterja 0:3927c6d8ad1f 211 0.00366494409556548,
baxterja 0:3927c6d8ad1f 212 0.00366963573779647,
baxterja 0:3927c6d8ad1f 213 0.00367457381745451,
baxterja 0:3927c6d8ad1f 214 0.00367783024950588,
baxterja 0:3927c6d8ad1f 215 0.00368130382332767,
baxterja 0:3927c6d8ad1f 216 0.00368329710162579,
baxterja 0:3927c6d8ad1f 217 0.00369126347001870,
baxterja 0:3927c6d8ad1f 218 0.00369087449038130,
baxterja 0:3927c6d8ad1f 219 0.00369079790741907,
baxterja 0:3927c6d8ad1f 220 0.00369643982204526,
baxterja 0:3927c6d8ad1f 221 0.00369766453946281,
baxterja 0:3927c6d8ad1f 222 0.00369941489929772,
baxterja 0:3927c6d8ad1f 223 0.00370041177271180,
baxterja 0:3927c6d8ad1f 224 0.00370189241602639,
baxterja 0:3927c6d8ad1f 225 0.00370304548909528,
baxterja 0:3927c6d8ad1f 226 0.00370413802604405,
baxterja 0:3927c6d8ad1f 227 0.00370464038533780,
baxterja 0:3927c6d8ad1f 228 0.00370464038533780,
baxterja 0:3927c6d8ad1f 229 0.00370413802604405,
baxterja 0:3927c6d8ad1f 230 0.00370304548909528,
baxterja 0:3927c6d8ad1f 231 0.00370189241602639,
baxterja 0:3927c6d8ad1f 232 0.00370041177271180,
baxterja 0:3927c6d8ad1f 233 0.00369941489929772,
baxterja 0:3927c6d8ad1f 234 0.00369766453946281,
baxterja 0:3927c6d8ad1f 235 0.00369643982204526,
baxterja 0:3927c6d8ad1f 236 0.00369079790741907,
baxterja 0:3927c6d8ad1f 237 0.00369087449038130,
baxterja 0:3927c6d8ad1f 238 0.00369126347001870,
baxterja 0:3927c6d8ad1f 239 0.00368329710162579,
baxterja 0:3927c6d8ad1f 240 0.00368130382332767,
baxterja 0:3927c6d8ad1f 241 0.00367783024950588,
baxterja 0:3927c6d8ad1f 242 0.00367457381745451,
baxterja 0:3927c6d8ad1f 243 0.00366963573779647,
baxterja 0:3927c6d8ad1f 244 0.00366494409556548,
baxterja 0:3927c6d8ad1f 245 0.00365927328685460,
baxterja 0:3927c6d8ad1f 246 0.00365423915635453,
baxterja 0:3927c6d8ad1f 247 0.00364862849480178,
baxterja 0:3927c6d8ad1f 248 0.00364352288365460,
baxterja 0:3927c6d8ad1f 249 0.00363786374022990,
baxterja 0:3927c6d8ad1f 250 0.00363226321494882,
baxterja 0:3927c6d8ad1f 251 0.00362591596791954,
baxterja 0:3927c6d8ad1f 252 0.00361922292724758,
baxterja 0:3927c6d8ad1f 253 0.00361233039031660,
baxterja 0:3927c6d8ad1f 254 0.00360494297850754,
baxterja 0:3927c6d8ad1f 255 0.00359950458629560,
baxterja 0:3927c6d8ad1f 256 0.00359006856669697,
baxterja 0:3927c6d8ad1f 257 0.00357801462512765,
baxterja 0:3927c6d8ad1f 258 0.00357689031711855,
baxterja 0:3927c6d8ad1f 259 0.00356587002173744,
baxterja 0:3927c6d8ad1f 260 0.00355665353091388,
baxterja 0:3927c6d8ad1f 261 0.00354686935571502,
baxterja 0:3927c6d8ad1f 262 0.00353918710384162,
baxterja 0:3927c6d8ad1f 263 0.00352996025917487,
baxterja 0:3927c6d8ad1f 264 0.00352191431883533,
baxterja 0:3927c6d8ad1f 265 0.00351179661900564,
baxterja 0:3927c6d8ad1f 266 0.00350258155909523,
baxterja 0:3927c6d8ad1f 267 0.00349145780595203,
baxterja 0:3927c6d8ad1f 268 0.00348137861989829,
baxterja 0:3927c6d8ad1f 269 0.00346977560789619,
baxterja 0:3927c6d8ad1f 270 0.00345950626709297,
baxterja 0:3927c6d8ad1f 271 0.00344788640610150,
baxterja 0:3927c6d8ad1f 272 0.00343729081346655,
baxterja 0:3927c6d8ad1f 273 0.00342527970126076,
baxterja 0:3927c6d8ad1f 274 0.00341358117591052,
baxterja 0:3927c6d8ad1f 275 0.00340201380261714,
baxterja 0:3927c6d8ad1f 276 0.00339593158768486,
baxterja 0:3927c6d8ad1f 277 0.00337340614667260,
baxterja 0:3927c6d8ad1f 278 0.00336582204821038,
baxterja 0:3927c6d8ad1f 279 0.00335490587728655,
baxterja 0:3927c6d8ad1f 280 0.00334278731970893,
baxterja 0:3927c6d8ad1f 281 0.00332746621803916,
baxterja 0:3927c6d8ad1f 282 0.00331411607506732,
baxterja 0:3927c6d8ad1f 283 0.00329857943310240,
baxterja 0:3927c6d8ad1f 284 0.00328578417067009,
baxterja 0:3927c6d8ad1f 285 0.00327070521989578,
baxterja 0:3927c6d8ad1f 286 0.00325830171776266,
baxterja 0:3927c6d8ad1f 287 0.00324309082121968,
baxterja 0:3927c6d8ad1f 288 0.00323043068211672,
baxterja 0:3927c6d8ad1f 289 0.00321431574769385,
baxterja 0:3927c6d8ad1f 290 0.00320106537708682,
baxterja 0:3927c6d8ad1f 291 0.00318404202174892,
baxterja 0:3927c6d8ad1f 292 0.00317063676755790,
baxterja 0:3927c6d8ad1f 293 0.00315257957066846,
baxterja 0:3927c6d8ad1f 294 0.00313896920891965,
baxterja 0:3927c6d8ad1f 295 0.00311424353468359,
baxterja 0:3927c6d8ad1f 296 0.00311307778862543,
baxterja 0:3927c6d8ad1f 297 0.00308869428115324,
baxterja 0:3927c6d8ad1f 298 0.00306643736356742,
baxterja 0:3927c6d8ad1f 299 0.00305157040082656,
baxterja 0:3927c6d8ad1f 300 0.00303732312039544,
baxterja 0:3927c6d8ad1f 301 0.00302120747953588,
baxterja 0:3927c6d8ad1f 302 0.00300581268506110,
baxterja 0:3927c6d8ad1f 303 0.00298714691522817,
baxterja 0:3927c6d8ad1f 304 0.00297044279838009,
baxterja 0:3927c6d8ad1f 305 0.00295009345796840,
baxterja 0:3927c6d8ad1f 306 0.00293311428662787,
baxterja 0:3927c6d8ad1f 307 0.00291199026392523,
baxterja 0:3927c6d8ad1f 308 0.00289570516626933,
baxterja 0:3927c6d8ad1f 309 0.00287407059058428,
baxterja 0:3927c6d8ad1f 310 0.00285874465133605,
baxterja 0:3927c6d8ad1f 311 0.00283603752336853,
baxterja 0:3927c6d8ad1f 312 0.00282250662520772,
baxterja 0:3927c6d8ad1f 313 0.00279778186887203,
baxterja 0:3927c6d8ad1f 314 0.00279082346790514,
baxterja 0:3927c6d8ad1f 315 0.00274945418608348,
baxterja 0:3927c6d8ad1f 316 0.00274149898919641,
baxterja 0:3927c6d8ad1f 317 0.00274205375475237,
baxterja 0:3927c6d8ad1f 318 0.00270761719256829,
baxterja 0:3927c6d8ad1f 319 0.00268646307379128,
baxterja 0:3927c6d8ad1f 320 0.00266111980952651,
baxterja 0:3927c6d8ad1f 321 0.00264164776893963,
baxterja 0:3927c6d8ad1f 322 0.00262131473283837,
baxterja 0:3927c6d8ad1f 323 0.00260244294098803,
baxterja 0:3927c6d8ad1f 324 0.00258446154111681,
baxterja 0:3927c6d8ad1f 325 0.00256464167177514,
baxterja 0:3927c6d8ad1f 326 0.00254761155808375,
baxterja 0:3927c6d8ad1f 327 0.00252568320446658,
baxterja 0:3927c6d8ad1f 328 0.00250942587726843,
baxterja 0:3927c6d8ad1f 329 0.00248484040428462,
baxterja 0:3927c6d8ad1f 330 0.00247033152393311,
baxterja 0:3927c6d8ad1f 331 0.00244169878557599,
baxterja 0:3927c6d8ad1f 332 0.00243168327631056,
baxterja 0:3927c6d8ad1f 333 0.00239489319998042,
baxterja 0:3927c6d8ad1f 334 0.00240962754549243,
baxterja 0:3927c6d8ad1f 335 0.00237497949175132,
baxterja 0:3927c6d8ad1f 336 0.00225358157041652,
baxterja 0:3927c6d8ad1f 337 0.00232623464517315,
baxterja 0:3927c6d8ad1f 338 0.00229715073318613,
baxterja 0:3927c6d8ad1f 339 0.00230092287432329,
baxterja 0:3927c6d8ad1f 340 0.00226646783939495,
baxterja 0:3927c6d8ad1f 341 0.00225605241370255,
baxterja 0:3927c6d8ad1f 342 0.00222092552588268,
baxterja 0:3927c6d8ad1f 343 0.00220558455176705,
baxterja 0:3927c6d8ad1f 344 0.00217146660668663,
baxterja 0:3927c6d8ad1f 345 0.00215469918380619,
baxterja 0:3927c6d8ad1f 346 0.00212232982776793,
baxterja 0:3927c6d8ad1f 347 0.00210551867296513,
baxterja 0:3927c6d8ad1f 348 0.00207476466732652,
baxterja 0:3927c6d8ad1f 349 0.00205837690374429,
baxterja 0:3927c6d8ad1f 350 0.00202912020658817,
baxterja 0:3927c6d8ad1f 351 0.00201327315570587,
baxterja 0:3927c6d8ad1f 352 0.00198494885848217,
baxterja 0:3927c6d8ad1f 353 0.00196838475539374,
baxterja 0:3927c6d8ad1f 354 0.00194058236914933,
baxterja 0:3927c6d8ad1f 355 0.0861805974737537
baxterja 0:3927c6d8ad1f 356 };
baxterja 0:3927c6d8ad1f 357
baxterja 0:3927c6d8ad1f 358
baxterja 0:3927c6d8ad1f 359 // Coefficients for FIR band-pass filter (single-precision floating)
baxterja 0:3927c6d8ad1f 360 // Order: 255
baxterja 0:3927c6d8ad1f 361 // Fs = 10000
baxterja 0:3927c6d8ad1f 362 // Fstop1 = 140
baxterja 0:3927c6d8ad1f 363 // Fpass1 = 180
baxterja 0:3927c6d8ad1f 364 // Fpass2 = 200
baxterja 0:3927c6d8ad1f 365 // Fstop2 = 240
baxterja 0:3927c6d8ad1f 366 // Density Factor 20
baxterja 0:3927c6d8ad1f 367 float bp_filter_coeff[bp_fir_length] = {
baxterja 0:3927c6d8ad1f 368 -0.0222569832875342,
baxterja 0:3927c6d8ad1f 369 -0.000668571820934435,
baxterja 0:3927c6d8ad1f 370 -0.000617098880070943,
baxterja 0:3927c6d8ad1f 371 -0.000526912832180624,
baxterja 0:3927c6d8ad1f 372 -0.000394083108191473,
baxterja 0:3927c6d8ad1f 373 -0.000224044823896433,
baxterja 0:3927c6d8ad1f 374 -1.40519139447993e-05,
baxterja 0:3927c6d8ad1f 375 0.000228753985399507,
baxterja 0:3927c6d8ad1f 376 0.000506043646368515,
baxterja 0:3927c6d8ad1f 377 0.000809081179935479,
baxterja 0:3927c6d8ad1f 378 0.00113886884349691,
baxterja 0:3927c6d8ad1f 379 0.00148482706293391,
baxterja 0:3927c6d8ad1f 380 0.00184749122790831,
baxterja 0:3927c6d8ad1f 381 0.00221412926605753,
baxterja 0:3927c6d8ad1f 382 0.00258556196728641,
baxterja 0:3927c6d8ad1f 383 0.00294623650522875,
baxterja 0:3927c6d8ad1f 384 0.00329828480589904,
baxterja 0:3927c6d8ad1f 385 0.00362103051636677,
baxterja 0:3927c6d8ad1f 386 0.00392129596654753,
baxterja 0:3927c6d8ad1f 387 0.00416037700790689,
baxterja 0:3927c6d8ad1f 388 0.00440774110765089,
baxterja 0:3927c6d8ad1f 389 0.00458742109894213,
baxterja 0:3927c6d8ad1f 390 0.00470432883601479,
baxterja 0:3927c6d8ad1f 391 0.00477604326343940,
baxterja 0:3927c6d8ad1f 392 0.00477932011891816,
baxterja 0:3927c6d8ad1f 393 0.00472369327143935,
baxterja 0:3927c6d8ad1f 394 0.00459673449069964,
baxterja 0:3927c6d8ad1f 395 0.00440550863345307,
baxterja 0:3927c6d8ad1f 396 0.00414276809544121,
baxterja 0:3927c6d8ad1f 397 0.00381610310764620,
baxterja 0:3927c6d8ad1f 398 0.00342194240814885,
baxterja 0:3927c6d8ad1f 399 0.00296924934443244,
baxterja 0:3927c6d8ad1f 400 0.00245734168541197,
baxterja 0:3927c6d8ad1f 401 0.00189704915840860,
baxterja 0:3927c6d8ad1f 402 0.00128969301635370,
baxterja 0:3927c6d8ad1f 403 0.000647875455120701,
baxterja 0:3927c6d8ad1f 404 -2.63604406483334e-05,
baxterja 0:3927c6d8ad1f 405 -0.000717680016887559,
baxterja 0:3927c6d8ad1f 406 -0.00142424098193147,
baxterja 0:3927c6d8ad1f 407 -0.00211871793213848,
baxterja 0:3927c6d8ad1f 408 -0.00280466259597701,
baxterja 0:3927c6d8ad1f 409 -0.00347302243192041,
baxterja 0:3927c6d8ad1f 410 -0.00410155649476450,
baxterja 0:3927c6d8ad1f 411 -0.00468849572012807,
baxterja 0:3927c6d8ad1f 412 -0.00521831221732055,
baxterja 0:3927c6d8ad1f 413 -0.00568473286208729,
baxterja 0:3927c6d8ad1f 414 -0.00607617428224791,
baxterja 0:3927c6d8ad1f 415 -0.00638642038264520,
baxterja 0:3927c6d8ad1f 416 -0.00660654522935380,
baxterja 0:3927c6d8ad1f 417 -0.00673201343716618,
baxterja 0:3927c6d8ad1f 418 -0.00675686946570070,
baxterja 0:3927c6d8ad1f 419 -0.00667909912380224,
baxterja 0:3927c6d8ad1f 420 -0.00649590629000032,
baxterja 0:3927c6d8ad1f 421 -0.00620853153050349,
baxterja 0:3927c6d8ad1f 422 -0.00581778091366643,
baxterja 0:3927c6d8ad1f 423 -0.00532861669082900,
baxterja 0:3927c6d8ad1f 424 -0.00474475510188909,
baxterja 0:3927c6d8ad1f 425 -0.00407398377208893,
baxterja 0:3927c6d8ad1f 426 -0.00332036080041792,
baxterja 0:3927c6d8ad1f 427 -0.00249639621821765,
baxterja 0:3927c6d8ad1f 428 -0.00161692422174727,
baxterja 0:3927c6d8ad1f 429 -0.000686114637835394,
baxterja 0:3927c6d8ad1f 430 0.000276969889091618,
baxterja 0:3927c6d8ad1f 431 0.00126158838172335,
baxterja 0:3927c6d8ad1f 432 0.00225109525801695,
baxterja 0:3927c6d8ad1f 433 0.00323185932244432,
baxterja 0:3927c6d8ad1f 434 0.00418763727591780,
baxterja 0:3927c6d8ad1f 435 0.00510440961298076,
baxterja 0:3927c6d8ad1f 436 0.00596653561986331,
baxterja 0:3927c6d8ad1f 437 0.00676059725642517,
baxterja 0:3927c6d8ad1f 438 0.00747245231692098,
baxterja 0:3927c6d8ad1f 439 0.00809037791844765,
baxterja 0:3927c6d8ad1f 440 0.00860240336852779,
baxterja 0:3927c6d8ad1f 441 0.00899909501543391,
baxterja 0:3927c6d8ad1f 442 0.00927138366550150,
baxterja 0:3927c6d8ad1f 443 0.00941337467689702,
baxterja 0:3927c6d8ad1f 444 0.00942035086127182,
baxterja 0:3927c6d8ad1f 445 0.00929102977283836,
baxterja 0:3927c6d8ad1f 446 0.00902403254438426,
baxterja 0:3927c6d8ad1f 447 0.00861862088073253,
baxterja 0:3927c6d8ad1f 448 0.00808277337301294,
baxterja 0:3927c6d8ad1f 449 0.00741973293721300,
baxterja 0:3927c6d8ad1f 450 0.00663808854880170,
baxterja 0:3927c6d8ad1f 451 0.00574764652047989,
baxterja 0:3927c6d8ad1f 452 0.00475963542671197,
baxterja 0:3927c6d8ad1f 453 0.00368791267821526,
baxterja 0:3927c6d8ad1f 454 0.00254692028134653,
baxterja 0:3927c6d8ad1f 455 0.00135318490817447,
baxterja 0:3927c6d8ad1f 456 0.000123381816987046,
baxterja 0:3927c6d8ad1f 457 -0.00112406829604574,
baxterja 0:3927c6d8ad1f 458 -0.00237116204428360,
baxterja 0:3927c6d8ad1f 459 -0.00359884130528209,
baxterja 0:3927c6d8ad1f 460 -0.00478919843371992,
baxterja 0:3927c6d8ad1f 461 -0.00592368092266592,
baxterja 0:3927c6d8ad1f 462 -0.00698521179296005,
baxterja 0:3927c6d8ad1f 463 -0.00795630134054653,
baxterja 0:3927c6d8ad1f 464 -0.00882180545791639,
baxterja 0:3927c6d8ad1f 465 -0.00956745282162880,
baxterja 0:3927c6d8ad1f 466 -0.0101826820881787,
baxterja 0:3927c6d8ad1f 467 -0.0106544412214730,
baxterja 0:3927c6d8ad1f 468 -0.0109757370305086,
baxterja 0:3927c6d8ad1f 469 -0.0111401872280476,
baxterja 0:3927c6d8ad1f 470 -0.0111439989937533,
baxterja 0:3927c6d8ad1f 471 -0.0109860306403343,
baxterja 0:3927c6d8ad1f 472 -0.0106669796725910,
baxterja 0:3927c6d8ad1f 473 -0.0101903953657629,
baxterja 0:3927c6d8ad1f 474 -0.00956214881730735,
baxterja 0:3927c6d8ad1f 475 -0.00879053537462268,
baxterja 0:3927c6d8ad1f 476 -0.00788592056463026,
baxterja 0:3927c6d8ad1f 477 -0.00686079789488663,
baxterja 0:3927c6d8ad1f 478 -0.00572962138717207,
baxterja 0:3927c6d8ad1f 479 -0.00450868146307788,
baxterja 0:3927c6d8ad1f 480 -0.00321565789521111,
baxterja 0:3927c6d8ad1f 481 -0.00186931333282453,
baxterja 0:3927c6d8ad1f 482 -0.000489113370880662,
baxterja 0:3927c6d8ad1f 483 0.000904730267919755,
baxterja 0:3927c6d8ad1f 484 0.00229132886837385,
baxterja 0:3927c6d8ad1f 485 0.00364982806960963,
baxterja 0:3927c6d8ad1f 486 0.00496072866543581,
baxterja 0:3927c6d8ad1f 487 0.00620453967164588,
baxterja 0:3927c6d8ad1f 488 0.00736222523931905,
baxterja 0:3927c6d8ad1f 489 0.00841655902006347,
baxterja 0:3927c6d8ad1f 490 0.00935134258076706,
baxterja 0:3927c6d8ad1f 491 0.0101530565640308,
baxterja 0:3927c6d8ad1f 492 0.0108094111402764,
baxterja 0:3927c6d8ad1f 493 0.0113105535457012,
baxterja 0:3927c6d8ad1f 494 0.0116487913595070,
baxterja 0:3927c6d8ad1f 495 0.0118191627771399,
baxterja 0:3927c6d8ad1f 496 0.0118191627771399,
baxterja 0:3927c6d8ad1f 497 0.0116487913595070,
baxterja 0:3927c6d8ad1f 498 0.0113105535457012,
baxterja 0:3927c6d8ad1f 499 0.0108094111402764,
baxterja 0:3927c6d8ad1f 500 0.0101530565640308,
baxterja 0:3927c6d8ad1f 501 0.00935134258076706,
baxterja 0:3927c6d8ad1f 502 0.00841655902006347,
baxterja 0:3927c6d8ad1f 503 0.00736222523931905,
baxterja 0:3927c6d8ad1f 504 0.00620453967164588,
baxterja 0:3927c6d8ad1f 505 0.00496072866543581,
baxterja 0:3927c6d8ad1f 506 0.00364982806960963,
baxterja 0:3927c6d8ad1f 507 0.00229132886837385,
baxterja 0:3927c6d8ad1f 508 0.000904730267919755,
baxterja 0:3927c6d8ad1f 509 -0.000489113370880662,
baxterja 0:3927c6d8ad1f 510 -0.00186931333282453,
baxterja 0:3927c6d8ad1f 511 -0.00321565789521111,
baxterja 0:3927c6d8ad1f 512 -0.00450868146307788,
baxterja 0:3927c6d8ad1f 513 -0.00572962138717207,
baxterja 0:3927c6d8ad1f 514 -0.00686079789488663,
baxterja 0:3927c6d8ad1f 515 -0.00788592056463026,
baxterja 0:3927c6d8ad1f 516 -0.00879053537462268,
baxterja 0:3927c6d8ad1f 517 -0.00956214881730735,
baxterja 0:3927c6d8ad1f 518 -0.0101903953657629,
baxterja 0:3927c6d8ad1f 519 -0.0106669796725910,
baxterja 0:3927c6d8ad1f 520 -0.0109860306403343,
baxterja 0:3927c6d8ad1f 521 -0.0111439989937533,
baxterja 0:3927c6d8ad1f 522 -0.0111401872280476,
baxterja 0:3927c6d8ad1f 523 -0.0109757370305086,
baxterja 0:3927c6d8ad1f 524 -0.0106544412214730,
baxterja 0:3927c6d8ad1f 525 -0.0101826820881787,
baxterja 0:3927c6d8ad1f 526 -0.00956745282162880,
baxterja 0:3927c6d8ad1f 527 -0.00882180545791639,
baxterja 0:3927c6d8ad1f 528 -0.00795630134054653,
baxterja 0:3927c6d8ad1f 529 -0.00698521179296005,
baxterja 0:3927c6d8ad1f 530 -0.00592368092266592,
baxterja 0:3927c6d8ad1f 531 -0.00478919843371992,
baxterja 0:3927c6d8ad1f 532 -0.00359884130528209,
baxterja 0:3927c6d8ad1f 533 -0.00237116204428360,
baxterja 0:3927c6d8ad1f 534 -0.00112406829604574,
baxterja 0:3927c6d8ad1f 535 0.000123381816987046,
baxterja 0:3927c6d8ad1f 536 0.00135318490817447,
baxterja 0:3927c6d8ad1f 537 0.00254692028134653,
baxterja 0:3927c6d8ad1f 538 0.00368791267821526,
baxterja 0:3927c6d8ad1f 539 0.00475963542671197,
baxterja 0:3927c6d8ad1f 540 0.00574764652047989,
baxterja 0:3927c6d8ad1f 541 0.00663808854880170,
baxterja 0:3927c6d8ad1f 542 0.00741973293721300,
baxterja 0:3927c6d8ad1f 543 0.00808277337301294,
baxterja 0:3927c6d8ad1f 544 0.00861862088073253,
baxterja 0:3927c6d8ad1f 545 0.00902403254438426,
baxterja 0:3927c6d8ad1f 546 0.00929102977283836,
baxterja 0:3927c6d8ad1f 547 0.00942035086127182,
baxterja 0:3927c6d8ad1f 548 0.00941337467689702,
baxterja 0:3927c6d8ad1f 549 0.00927138366550150,
baxterja 0:3927c6d8ad1f 550 0.00899909501543391,
baxterja 0:3927c6d8ad1f 551 0.00860240336852779,
baxterja 0:3927c6d8ad1f 552 0.00809037791844765,
baxterja 0:3927c6d8ad1f 553 0.00747245231692098,
baxterja 0:3927c6d8ad1f 554 0.00676059725642517,
baxterja 0:3927c6d8ad1f 555 0.00596653561986331,
baxterja 0:3927c6d8ad1f 556 0.00510440961298076,
baxterja 0:3927c6d8ad1f 557 0.00418763727591780,
baxterja 0:3927c6d8ad1f 558 0.00323185932244432,
baxterja 0:3927c6d8ad1f 559 0.00225109525801695,
baxterja 0:3927c6d8ad1f 560 0.00126158838172335,
baxterja 0:3927c6d8ad1f 561 0.000276969889091618,
baxterja 0:3927c6d8ad1f 562 -0.000686114637835394,
baxterja 0:3927c6d8ad1f 563 -0.00161692422174727,
baxterja 0:3927c6d8ad1f 564 -0.00249639621821765,
baxterja 0:3927c6d8ad1f 565 -0.00332036080041792,
baxterja 0:3927c6d8ad1f 566 -0.00407398377208893,
baxterja 0:3927c6d8ad1f 567 -0.00474475510188909,
baxterja 0:3927c6d8ad1f 568 -0.00532861669082900,
baxterja 0:3927c6d8ad1f 569 -0.00581778091366643,
baxterja 0:3927c6d8ad1f 570 -0.00620853153050349,
baxterja 0:3927c6d8ad1f 571 -0.00649590629000032,
baxterja 0:3927c6d8ad1f 572 -0.00667909912380224,
baxterja 0:3927c6d8ad1f 573 -0.00675686946570070,
baxterja 0:3927c6d8ad1f 574 -0.00673201343716618,
baxterja 0:3927c6d8ad1f 575 -0.00660654522935380,
baxterja 0:3927c6d8ad1f 576 -0.00638642038264520,
baxterja 0:3927c6d8ad1f 577 -0.00607617428224791,
baxterja 0:3927c6d8ad1f 578 -0.00568473286208729,
baxterja 0:3927c6d8ad1f 579 -0.00521831221732055,
baxterja 0:3927c6d8ad1f 580 -0.00468849572012807,
baxterja 0:3927c6d8ad1f 581 -0.00410155649476450,
baxterja 0:3927c6d8ad1f 582 -0.00347302243192041,
baxterja 0:3927c6d8ad1f 583 -0.00280466259597701,
baxterja 0:3927c6d8ad1f 584 -0.00211871793213848,
baxterja 0:3927c6d8ad1f 585 -0.00142424098193147,
baxterja 0:3927c6d8ad1f 586 -0.000717680016887559,
baxterja 0:3927c6d8ad1f 587 -2.63604406483334e-05,
baxterja 0:3927c6d8ad1f 588 0.000647875455120701,
baxterja 0:3927c6d8ad1f 589 0.00128969301635370,
baxterja 0:3927c6d8ad1f 590 0.00189704915840860,
baxterja 0:3927c6d8ad1f 591 0.00245734168541197,
baxterja 0:3927c6d8ad1f 592 0.00296924934443244,
baxterja 0:3927c6d8ad1f 593 0.00342194240814885,
baxterja 0:3927c6d8ad1f 594 0.00381610310764620,
baxterja 0:3927c6d8ad1f 595 0.00414276809544121,
baxterja 0:3927c6d8ad1f 596 0.00440550863345307,
baxterja 0:3927c6d8ad1f 597 0.00459673449069964,
baxterja 0:3927c6d8ad1f 598 0.00472369327143935,
baxterja 0:3927c6d8ad1f 599 0.00477932011891816,
baxterja 0:3927c6d8ad1f 600 0.00477604326343940,
baxterja 0:3927c6d8ad1f 601 0.00470432883601479,
baxterja 0:3927c6d8ad1f 602 0.00458742109894213,
baxterja 0:3927c6d8ad1f 603 0.00440774110765089,
baxterja 0:3927c6d8ad1f 604 0.00416037700790689,
baxterja 0:3927c6d8ad1f 605 0.00392129596654753,
baxterja 0:3927c6d8ad1f 606 0.00362103051636677,
baxterja 0:3927c6d8ad1f 607 0.00329828480589904,
baxterja 0:3927c6d8ad1f 608 0.00294623650522875,
baxterja 0:3927c6d8ad1f 609 0.00258556196728641,
baxterja 0:3927c6d8ad1f 610 0.00221412926605753,
baxterja 0:3927c6d8ad1f 611 0.00184749122790831,
baxterja 0:3927c6d8ad1f 612 0.00148482706293391,
baxterja 0:3927c6d8ad1f 613 0.00113886884349691,
baxterja 0:3927c6d8ad1f 614 0.000809081179935479,
baxterja 0:3927c6d8ad1f 615 0.000506043646368515,
baxterja 0:3927c6d8ad1f 616 0.000228753985399507,
baxterja 0:3927c6d8ad1f 617 -1.40519139447993e-05,
baxterja 0:3927c6d8ad1f 618 -0.000224044823896433,
baxterja 0:3927c6d8ad1f 619 -0.000394083108191473,
baxterja 0:3927c6d8ad1f 620 -0.000526912832180624,
baxterja 0:3927c6d8ad1f 621 -0.000617098880070943,
baxterja 0:3927c6d8ad1f 622 -0.000668571820934435,
baxterja 0:3927c6d8ad1f 623 -0.0222569832875342
baxterja 0:3927c6d8ad1f 624 };
baxterja 0:3927c6d8ad1f 625
baxterja 0:3927c6d8ad1f 626
baxterja 0:3927c6d8ad1f 627 int lp_fifo_num = 1;
baxterja 0:3927c6d8ad1f 628 int bp_fifo_num = 1;
baxterja 0:3927c6d8ad1f 629
baxterja 0:3927c6d8ad1f 630 float x_0[bp_fir_length];
baxterja 0:3927c6d8ad1f 631 float x_1[bp_fir_length];
baxterja 0:3927c6d8ad1f 632
baxterja 0:3927c6d8ad1f 633 int value[] = {0,0};
baxterja 0:3927c6d8ad1f 634
baxterja 0:3927c6d8ad1f 635 float mag = 0;
baxterja 0:3927c6d8ad1f 636 float calc_mag = 0;
baxterja 0:3927c6d8ad1f 637 double mag_total = 0;
baxterja 0:3927c6d8ad1f 638 float calc_phase = 0;
baxterja 0:3927c6d8ad1f 639 int NumInBlock = 0;
baxterja 0:3927c6d8ad1f 640
baxterja 0:3927c6d8ad1f 641 float mag_result = 0;
baxterja 0:3927c6d8ad1f 642 float phase_result = 0;
baxterja 0:3927c6d8ad1f 643 /*
baxterja 0:3927c6d8ad1f 644 int diff_0[3] = {0, 0, 0};
baxterja 0:3927c6d8ad1f 645 int diff_1[3] = {0, 0, 0};
baxterja 0:3927c6d8ad1f 646 */
baxterja 0:3927c6d8ad1f 647 double final_mag = 0;
baxterja 0:3927c6d8ad1f 648 float final_phase = 0;
baxterja 0:3927c6d8ad1f 649
baxterja 0:3927c6d8ad1f 650 // Finite State Machine
baxterja 0:3927c6d8ad1f 651 int current_state = 0;
baxterja 0:3927c6d8ad1f 652
baxterja 0:3927c6d8ad1f 653 // Flag
baxterja 0:3927c6d8ad1f 654 bool ADC_reading = false;
baxterja 0:3927c6d8ad1f 655 bool isTransmitting = false;
baxterja 0:3927c6d8ad1f 656
baxterja 0:3927c6d8ad1f 657
baxterja 0:3927c6d8ad1f 658 //IntervalTimer timer0;
baxterja 0:3927c6d8ad1f 659 Ticker timer0;
baxterja 0:3927c6d8ad1f 660 Timer t1;
baxterja 0:3927c6d8ad1f 661
baxterja 0:3927c6d8ad1f 662 int adc_cal(void)
baxterja 0:3927c6d8ad1f 663 {
baxterja 0:3927c6d8ad1f 664 ADC0_CFG1 |= (ADC_CFG1_MODE(3) | // 16 bits mode
baxterja 0:3927c6d8ad1f 665 ADC_CFG1_ADICLK(1)| // Input Bus Clock divided by 2 (20-25 MHz out of reset (FEI mode) / 2)
baxterja 0:3927c6d8ad1f 666 ADC_CFG1_ADIV(2)) ; // Clock divide by 4 (2.5-3 MHz)
baxterja 0:3927c6d8ad1f 667
baxterja 0:3927c6d8ad1f 668 ADC0_SC3 |= ADC_SC3_AVGE_MASK | // Enable HW average
baxterja 0:3927c6d8ad1f 669 ADC_SC3_AVGS(3) | // Set HW average of 32 samples
baxterja 0:3927c6d8ad1f 670 ADC_SC3_CAL_MASK; // Start calibration process
baxterja 0:3927c6d8ad1f 671
baxterja 0:3927c6d8ad1f 672 while(ADC0_SC3 & ADC_SC3_CAL_MASK); // Wait for calibration to end
baxterja 0:3927c6d8ad1f 673
baxterja 0:3927c6d8ad1f 674 if(ADC0_SC3 & ADC_SC3_CALF_MASK) return 1; // Check for successful calibration
baxterja 0:3927c6d8ad1f 675
baxterja 0:3927c6d8ad1f 676 uint16_t calib = 0; // calibration variable
baxterja 0:3927c6d8ad1f 677 calib += ADC0->CLPS + ADC0_CLP4 + ADC0_CLP3 + ADC0_CLP2 + ADC0_CLP1 + ADC0_CLP0;
baxterja 0:3927c6d8ad1f 678 calib /= 2;
baxterja 0:3927c6d8ad1f 679 calib |= 0x8000; // Set MSB
baxterja 0:3927c6d8ad1f 680 ADC0_PG = calib;
baxterja 0:3927c6d8ad1f 681 calib = 0;
baxterja 0:3927c6d8ad1f 682 calib += ADC0_CLMS + ADC0_CLM4 + ADC0_CLM3 + ADC0_CLM2 + ADC0_CLM1 + ADC0_CLM0;
baxterja 0:3927c6d8ad1f 683 calib /= 2;
baxterja 0:3927c6d8ad1f 684 calib |= 0x8000; // Set MSB
baxterja 0:3927c6d8ad1f 685 ADC0_MG = calib;
baxterja 0:3927c6d8ad1f 686
baxterja 0:3927c6d8ad1f 687 return 0;
baxterja 0:3927c6d8ad1f 688 }
baxterja 0:3927c6d8ad1f 689
baxterja 0:3927c6d8ad1f 690 void adc_init()
baxterja 0:3927c6d8ad1f 691 {
baxterja 0:3927c6d8ad1f 692 // red, indicating not ready
baxterja 0:3927c6d8ad1f 693
baxterja 0:3927c6d8ad1f 694
baxterja 0:3927c6d8ad1f 695 // Turn on the ADC0 and ADC1 clocks
baxterja 0:3927c6d8ad1f 696 SIM_SCGC6 |= SIM_SCGC6_ADC0_MASK;
baxterja 0:3927c6d8ad1f 697 SIM_SCGC3 |= SIM_SCGC3_ADC1_MASK;
baxterja 0:3927c6d8ad1f 698
baxterja 0:3927c6d8ad1f 699
baxterja 0:3927c6d8ad1f 700 __disable_irq();
baxterja 0:3927c6d8ad1f 701 adc_cal();
baxterja 0:3927c6d8ad1f 702 //if(adc_cal()) {red = 0; green = 0;} // if calibration fails, display yellow
baxterja 0:3927c6d8ad1f 703 __enable_irq();
baxterja 0:3927c6d8ad1f 704
baxterja 0:3927c6d8ad1f 705
baxterja 0:3927c6d8ad1f 706
baxterja 0:3927c6d8ad1f 707 // Setup Configuration Register 1
baxterja 0:3927c6d8ad1f 708 ADC0_CFG1 = 0; // clear register
baxterja 0:3927c6d8ad1f 709 ADC0_CFG1 |= ADC_CFG1_ADICLK(0); // select bus clock
baxterja 0:3927c6d8ad1f 710 ADC0_CFG1 |= ADC_CFG1_MODE(3); // select 16-bit 2's complement output
baxterja 0:3927c6d8ad1f 711 ADC0_CFG1 |= ADC_CFG1_ADIV(0); // clock divisor = 0.
baxterja 0:3927c6d8ad1f 712 ADC0_CFG1 &= ~ADC_CFG1_ADLSMP_MASK; // select short sample time //QUESTION
baxterja 0:3927c6d8ad1f 713 ADC0_CFG1 &= ~ADC_CFG1_ADLPC_MASK; // select normal power configuration
baxterja 0:3927c6d8ad1f 714 ADC1_CFG1 = 0; // clear register
baxterja 0:3927c6d8ad1f 715 ADC1_CFG1 |= ADC_CFG1_ADICLK(0); // select bus clock
baxterja 0:3927c6d8ad1f 716 ADC1_CFG1 |= ADC_CFG1_MODE(3); // select 16-bit 2's complement output
baxterja 0:3927c6d8ad1f 717 ADC1_CFG1 |= ADC_CFG1_ADIV(0); // clock divisor = 0.
baxterja 0:3927c6d8ad1f 718 ADC1_CFG1 &= ~ADC_CFG1_ADLSMP_MASK; // select short sample time
baxterja 0:3927c6d8ad1f 719 ADC1_CFG1 &= ~ADC_CFG1_ADLPC_MASK; // select normal power configuration
baxterja 0:3927c6d8ad1f 720
baxterja 0:3927c6d8ad1f 721 // Setup Configuration Register 2
baxterja 0:3927c6d8ad1f 722 ADC0_CFG2 = 0; // clear register
baxterja 0:3927c6d8ad1f 723 //ADC0_CFG2 |= ADC_CFG2_ADHSC_MASK ; // select high-speed conversion
baxterja 0:3927c6d8ad1f 724 ADC0_CFG2 |= ADC_CFG2_MUXSEL_MASK; // select a channels //possibly change to channel b.
baxterja 0:3927c6d8ad1f 725 ADC1_CFG2 = 0; // clear register
baxterja 0:3927c6d8ad1f 726 //ADC1_CFG2 |= ADC_CFG2_ADHSC_MASK ; // select high-speed conversion
baxterja 0:3927c6d8ad1f 727 ADC1_CFG2 &= ~ADC_CFG2_MUXSEL_MASK; // select a channels
baxterja 0:3927c6d8ad1f 728
baxterja 0:3927c6d8ad1f 729 // Setup Status and Control Register 2
baxterja 0:3927c6d8ad1f 730 ADC0_SC2 = 0; // clear register
baxterja 0:3927c6d8ad1f 731 ADC0_SC2 |= ADC_SC2_REFSEL(0); // select external voltage reference //QUESTION
baxterja 0:3927c6d8ad1f 732 //ADC0_SC2 |= ADC_SC2_DMAEN_MASK; // enable DMA
baxterja 0:3927c6d8ad1f 733 //ADC0_SC2 &= ~ADC_SC2_ADTRG_MASK; // select hardware trigger //QESTION
baxterja 0:3927c6d8ad1f 734 ADC1_SC2 = 0; // clear register
baxterja 0:3927c6d8ad1f 735 ADC1_SC2 |= ADC_SC2_REFSEL(0); // select external voltage reference
baxterja 0:3927c6d8ad1f 736 //ADC1_SC2 |= ADC_SC2_DMAEN_MASK; // enable DMA
baxterja 0:3927c6d8ad1f 737 //ADC1_SC2 &= ~ADC_SC2_ADTRG_MASK; // select hardware trigger
baxterja 0:3927c6d8ad1f 738
baxterja 0:3927c6d8ad1f 739 // Setup Status and Control Register 3 now that calibration is complete
baxterja 0:3927c6d8ad1f 740 ADC0_SC3 = 0; // Hardware Average set to 4 samples averaged
baxterja 0:3927c6d8ad1f 741 // Hardware Average Disabled
baxterja 0:3927c6d8ad1f 742 // select single conversion mode
baxterja 0:3927c6d8ad1f 743 ADC1_SC3 = 0; // Hardware Average set to 4 samples averaged
baxterja 0:3927c6d8ad1f 744 // Hardware Average Disabled
baxterja 0:3927c6d8ad1f 745 // select single conversion mode
baxterja 0:3927c6d8ad1f 746 //ADC1_SC3 = ADC_SC3_AVGS(0) | ADC_SC3_AVGE_MASK;//JARED COME BACK AND LOOK AT THIS
baxterja 0:3927c6d8ad1f 747
baxterja 0:3927c6d8ad1f 748 // Setup Status and Control Register 1A
baxterja 0:3927c6d8ad1f 749 ADC0_SC1A = 0; // clear register
baxterja 0:3927c6d8ad1f 750 ADC0_SC1A &= ~ADC_SC1_DIFF_MASK; // select single-ended mode
baxterja 0:3927c6d8ad1f 751 ADC0_SC1A |= ADC_SC1_AIEN_MASK; // enable interrupt (for debugging)
baxterja 0:3927c6d8ad1f 752 ADC0_SC1A |= ADC_SC1_ADCH(12); // select channel 13
baxterja 0:3927c6d8ad1f 753 ADC1_SC1A = 0; // clear register
baxterja 0:3927c6d8ad1f 754 ADC1_SC1A &= ~ADC_SC1_DIFF_MASK; // select single-ended mode
baxterja 0:3927c6d8ad1f 755 ADC1_SC1A |= ADC_SC1_AIEN_MASK; // enable interrupt (for debugging)
baxterja 0:3927c6d8ad1f 756 ADC1_SC1A |= ADC_SC1_ADCH(14); // select channel 14
baxterja 0:3927c6d8ad1f 757
baxterja 0:3927c6d8ad1f 758
baxterja 0:3927c6d8ad1f 759 // Check if ADC is finished initializing TODO: This part doesn't seem right, but I did it according to 871
baxterja 0:3927c6d8ad1f 760 while( (ADC0_SC1B&ADC_SC1_COCO_MASK)) {}
baxterja 0:3927c6d8ad1f 761 int gain = ADC0_RA; // read the register to clear SC1A[COCO] //possibly a
baxterja 0:3927c6d8ad1f 762 while( (ADC1_SC1A&ADC_SC1_COCO_MASK)) {}
baxterja 0:3927c6d8ad1f 763 gain = ADC1_RA; // read the register to clear SC1A[COCO]
baxterja 0:3927c6d8ad1f 764
baxterja 0:3927c6d8ad1f 765
baxterja 0:3927c6d8ad1f 766 //QUESTION
baxterja 0:3927c6d8ad1f 767 ADC0_SC3 &= ~ADC_SC3_ADCO_MASK; // single conversion mode
baxterja 0:3927c6d8ad1f 768 ADC1_SC3 &= ~ADC_SC3_ADCO_MASK; // single conversion mode
baxterja 0:3927c6d8ad1f 769 ADC0_SC2 &= ~ADC_SC2_ADTRG_MASK; // set ADC to software trigger
baxterja 0:3927c6d8ad1f 770 ADC1_SC2 &= ~ADC_SC2_ADTRG_MASK; // set ADC to software trigger
baxterja 0:3927c6d8ad1f 771 ADC0_SC1A |= ADC_SC1_ADCH(12); // write to SC1B causing a trigger
baxterja 0:3927c6d8ad1f 772 ADC1_SC1A |= ADC_SC1_ADCH(14); // write to SC1A causing a trigger
baxterja 0:3927c6d8ad1f 773 }
baxterja 0:3927c6d8ad1f 774
baxterja 0:3927c6d8ad1f 775
baxterja 0:3927c6d8ad1f 776
baxterja 0:3927c6d8ad1f 777 void pre_compute_tables() {
baxterja 0:3927c6d8ad1f 778 // This function will precompute the cos and sin tables used in the rest of the program
baxterja 0:3927c6d8ad1f 779 for(int precompute_counter = 0; precompute_counter < pre_compute_length; precompute_counter++){
baxterja 0:3927c6d8ad1f 780 out_val_pre[precompute_counter] = (int) (cos(twopi * CarrierFrequency * TimerInterruptInMicroSeconds * 1e-6 * precompute_counter) * 32500.0 + 33000.0);
baxterja 0:3927c6d8ad1f 781 i_mod_pre[precompute_counter] = (cos(twopi * CarrierFrequency * TimerInterruptInMicroSeconds * 1e-6 * precompute_counter));
baxterja 0:3927c6d8ad1f 782 q_mod_pre[precompute_counter] = (-sin(twopi * CarrierFrequency * TimerInterruptInMicroSeconds * 1e-6 * precompute_counter));
baxterja 0:3927c6d8ad1f 783
baxterja 0:3927c6d8ad1f 784 }
baxterja 0:3927c6d8ad1f 785 } //pre_compute_tables
baxterja 0:3927c6d8ad1f 786
baxterja 0:3927c6d8ad1f 787
baxterja 0:3927c6d8ad1f 788
baxterja 0:3927c6d8ad1f 789
baxterja 0:3927c6d8ad1f 790 void ISR_repeat() {//40 KHz
baxterja 0:3927c6d8ad1f 791 // Calculation of loop for generating signal to output on DAC
baxterja 0:3927c6d8ad1f 792
baxterja 0:3927c6d8ad1f 793 WaveOut.write_u16(out_val_pre[phase_counter]); //creates a wave that bounces between 0 & 3.3 V
baxterja 0:3927c6d8ad1f 794
baxterja 0:3927c6d8ad1f 795 // ISR counter reset and increment
baxterja 0:3927c6d8ad1f 796 if (ISR_counter >= ISR_counter_loop_reset)//10KHz
baxterja 0:3927c6d8ad1f 797 {
baxterja 0:3927c6d8ad1f 798 ISR_counter = 1;
baxterja 0:3927c6d8ad1f 799 //JARED ADD THESE 2 LINES BACK IN
baxterja 0:3927c6d8ad1f 800 ADC0_SC1A |= ADC_SC1_ADCH(12); // start ADC process Possibly change to B.
baxterja 0:3927c6d8ad1f 801 ADC1_SC1A |= ADC_SC1_ADCH(14); // start ADC process
baxterja 0:3927c6d8ad1f 802
baxterja 0:3927c6d8ad1f 803 ADC_reading = true;
baxterja 0:3927c6d8ad1f 804 current_i_mod = i_mod_pre[phase_counter];
baxterja 0:3927c6d8ad1f 805 current_q_mod = q_mod_pre[phase_counter];
baxterja 0:3927c6d8ad1f 806 }
baxterja 0:3927c6d8ad1f 807 else {
baxterja 0:3927c6d8ad1f 808 ISR_counter++;
baxterja 0:3927c6d8ad1f 809 }
baxterja 0:3927c6d8ad1f 810
baxterja 0:3927c6d8ad1f 811 phase_counter++;
baxterja 0:3927c6d8ad1f 812 if (phase_counter >= pre_compute_length) phase_counter = 0;
baxterja 0:3927c6d8ad1f 813
baxterja 0:3927c6d8ad1f 814 } //ISR_repeat
baxterja 0:3927c6d8ad1f 815
baxterja 0:3927c6d8ad1f 816
baxterja 0:3927c6d8ad1f 817 void execute_DSP() {
baxterja 0:3927c6d8ad1f 818 bp_fifo_num++;
baxterja 0:3927c6d8ad1f 819 if (bp_fifo_num >= bp_fir_length) bp_fifo_num = 0;
baxterja 0:3927c6d8ad1f 820
baxterja 0:3927c6d8ad1f 821 x_0[bp_fifo_num] = (float) (value[1] - value[0]);
baxterja 0:3927c6d8ad1f 822 x_1[bp_fifo_num] = (float) (value[0] - 32768);
baxterja 0:3927c6d8ad1f 823
baxterja 0:3927c6d8ad1f 824 // Band pass filter of incoming data
baxterja 0:3927c6d8ad1f 825 float y_0 = x_0[bp_fifo_num] * bp_filter_coeff[0];
baxterja 0:3927c6d8ad1f 826 float y_1 = x_1[bp_fifo_num] * bp_filter_coeff[0];
baxterja 0:3927c6d8ad1f 827
baxterja 0:3927c6d8ad1f 828 for(int fir_counter = 1; fir_counter < bp_fir_length; fir_counter++){
baxterja 0:3927c6d8ad1f 829 int fir_index = bp_fifo_num + fir_counter;
baxterja 0:3927c6d8ad1f 830 if (fir_index >= bp_fir_length) {
baxterja 0:3927c6d8ad1f 831 fir_index -= bp_fir_length;
baxterja 0:3927c6d8ad1f 832 }
baxterja 0:3927c6d8ad1f 833 y_0 += x_0[fir_index] * bp_filter_coeff[fir_counter];
baxterja 0:3927c6d8ad1f 834 y_1 += x_1[fir_index] * bp_filter_coeff[fir_counter];
baxterja 0:3927c6d8ad1f 835 }
baxterja 0:3927c6d8ad1f 836
baxterja 0:3927c6d8ad1f 837 current_i_mod = i_mod_pre[phase_counter];
baxterja 0:3927c6d8ad1f 838 current_q_mod = q_mod_pre[phase_counter];
baxterja 0:3927c6d8ad1f 839
baxterja 0:3927c6d8ad1f 840 // Demodulation of the signal
baxterja 0:3927c6d8ad1f 841 x_0_i[lp_fifo_num] = (y_0 * current_i_mod);
baxterja 0:3927c6d8ad1f 842 x_0_q[lp_fifo_num] = (y_0 * current_q_mod);
baxterja 0:3927c6d8ad1f 843 x_1_i[lp_fifo_num] = (y_1 * current_i_mod);
baxterja 0:3927c6d8ad1f 844 x_1_q[lp_fifo_num] = (y_1 * current_q_mod);
baxterja 0:3927c6d8ad1f 845
baxterja 0:3927c6d8ad1f 846 lp_fifo_num++;
baxterja 0:3927c6d8ad1f 847 if (lp_fifo_num >= lp_fir_length) lp_fifo_num = 0;
baxterja 0:3927c6d8ad1f 848
baxterja 0:3927c6d8ad1f 849 // Low pass filter of demodulated signal
baxterja 0:3927c6d8ad1f 850 float y_0_i = x_0_i[lp_fifo_num] * lp_filter_coeff[0];
baxterja 0:3927c6d8ad1f 851 float y_0_q = x_0_q[lp_fifo_num] * lp_filter_coeff[0];
baxterja 0:3927c6d8ad1f 852 float y_1_i = x_1_i[lp_fifo_num] * lp_filter_coeff[0];
baxterja 0:3927c6d8ad1f 853 float y_1_q = x_1_q[lp_fifo_num] * lp_filter_coeff[0];
baxterja 0:3927c6d8ad1f 854
baxterja 0:3927c6d8ad1f 855 for(int fir_counter = 1; fir_counter < lp_fir_length; fir_counter++){
baxterja 0:3927c6d8ad1f 856 int fir_index = lp_fifo_num + fir_counter;
baxterja 0:3927c6d8ad1f 857 if (fir_index >= lp_fir_length) {
baxterja 0:3927c6d8ad1f 858 fir_index -= lp_fir_length;
baxterja 0:3927c6d8ad1f 859 }
baxterja 0:3927c6d8ad1f 860 y_0_i += x_0_i[fir_index] * lp_filter_coeff[fir_counter];
baxterja 0:3927c6d8ad1f 861 y_0_q += x_0_q[fir_index] * lp_filter_coeff[fir_counter];
baxterja 0:3927c6d8ad1f 862 y_1_i += x_1_i[fir_index] * lp_filter_coeff[fir_counter];
baxterja 0:3927c6d8ad1f 863 y_1_q += x_1_q[fir_index] * lp_filter_coeff[fir_counter];
baxterja 0:3927c6d8ad1f 864 }
baxterja 0:3927c6d8ad1f 865
baxterja 0:3927c6d8ad1f 866 real_ip = y_0_i * y_1_i + y_0_q * y_1_q;
baxterja 0:3927c6d8ad1f 867 imag_ip = y_0_q * y_1_i - y_0_i * y_1_q;
baxterja 0:3927c6d8ad1f 868 y_0_squared = y_0_i * y_0_i + y_0_q * y_0_q;
baxterja 0:3927c6d8ad1f 869 y_1_squared = y_1_i * y_1_i + y_1_q * y_1_q;
baxterja 0:3927c6d8ad1f 870
baxterja 0:3927c6d8ad1f 871 // float mag = sqrt((real_ip * real_ip + imag_ip * imag_ip) / y_0_squared;
baxterja 0:3927c6d8ad1f 872 mag = sqrt(((float) real_ip * (float) real_ip + (float) imag_ip * (float) imag_ip)) / ((float) y_0_squared);
baxterja 0:3927c6d8ad1f 873 mag_total += mag;
baxterja 0:3927c6d8ad1f 874 calc_mag = mag_total / NumInBlock;
baxterja 0:3927c6d8ad1f 875
baxterja 0:3927c6d8ad1f 876 real_ip_total += real_ip;
baxterja 0:3927c6d8ad1f 877 imag_ip_total += imag_ip;
baxterja 0:3927c6d8ad1f 878 calc_phase = -atan2(imag_ip_total, real_ip_total);
baxterja 0:3927c6d8ad1f 879 }
baxterja 0:3927c6d8ad1f 880
baxterja 0:3927c6d8ad1f 881
baxterja 0:3927c6d8ad1f 882
baxterja 0:3927c6d8ad1f 883 void setup() {
baxterja 0:3927c6d8ad1f 884 adc_init();
baxterja 0:3927c6d8ad1f 885 pre_compute_tables();
baxterja 0:3927c6d8ad1f 886 wait(1);
baxterja 0:3927c6d8ad1f 887 } //setup
baxterja 0:3927c6d8ad1f 888
baxterja 0:3927c6d8ad1f 889 using namespace std;
baxterja 0:3927c6d8ad1f 890
baxterja 0:3927c6d8ad1f 891 int main() {
baxterja 0:3927c6d8ad1f 892 led_blue = 1;
baxterja 0:3927c6d8ad1f 893 led_green = 1;
baxterja 0:3927c6d8ad1f 894 led_red = 0;
baxterja 0:3927c6d8ad1f 895
baxterja 0:3927c6d8ad1f 896 setup();
baxterja 0:3927c6d8ad1f 897 int count = 0;
baxterja 0:3927c6d8ad1f 898 t1.start();
baxterja 0:3927c6d8ad1f 899
baxterja 0:3927c6d8ad1f 900 pc.baud(115200);
baxterja 0:3927c6d8ad1f 901
baxterja 0:3927c6d8ad1f 902 for(int i = 0; i < 86; i++)
baxterja 0:3927c6d8ad1f 903 {
baxterja 0:3927c6d8ad1f 904 if(NVIC_GetPriority((IRQn_Type) i) == 0) NVIC_SetPriority((IRQn_Type) i, 2);
baxterja 0:3927c6d8ad1f 905 }
baxterja 0:3927c6d8ad1f 906
baxterja 0:3927c6d8ad1f 907 // Give hardware associated with
baxterja 0:3927c6d8ad1f 908 // sampling the highest priority
baxterja 0:3927c6d8ad1f 909 NVIC_SetPriority(ADC1_IRQn,0);
baxterja 0:3927c6d8ad1f 910 NVIC_SetPriority(ADC0_IRQn,0);
baxterja 0:3927c6d8ad1f 911 NVIC_SetPriority(PDB0_IRQn,0);
baxterja 0:3927c6d8ad1f 912 NVIC_SetPriority(DMA0_IRQn,0);
baxterja 0:3927c6d8ad1f 913 NVIC_SetPriority(DMA1_IRQn,0);
baxterja 0:3927c6d8ad1f 914 NVIC_SetPriority(DMA2_IRQn,0);
baxterja 0:3927c6d8ad1f 915
baxterja 0:3927c6d8ad1f 916 NVIC_SetPriority(ENET_1588_Timer_IRQn,1);
baxterja 0:3927c6d8ad1f 917 NVIC_SetPriority(ENET_Transmit_IRQn,1);
baxterja 0:3927c6d8ad1f 918 NVIC_SetPriority(ENET_Receive_IRQn,1);
baxterja 0:3927c6d8ad1f 919 NVIC_SetPriority(ENET_Error_IRQn,1);
baxterja 0:3927c6d8ad1f 920
baxterja 0:3927c6d8ad1f 921 led_green = 1;
baxterja 0:3927c6d8ad1f 922 led_red = 1;
baxterja 0:3927c6d8ad1f 923 led_blue = 1;
baxterja 0:3927c6d8ad1f 924
baxterja 0:3927c6d8ad1f 925 timer0.attach_us(&ISR_repeat, TimerInterruptInMicroSeconds);
baxterja 0:3927c6d8ad1f 926 while(true) {
baxterja 0:3927c6d8ad1f 927
baxterja 0:3927c6d8ad1f 928 count++;
baxterja 0:3927c6d8ad1f 929 //printf("Loop");
baxterja 0:3927c6d8ad1f 930
baxterja 0:3927c6d8ad1f 931 while (!ADC_reading)
baxterja 0:3927c6d8ad1f 932 {
baxterja 0:3927c6d8ad1f 933
baxterja 0:3927c6d8ad1f 934 led_blue = 0;
baxterja 0:3927c6d8ad1f 935 }
baxterja 0:3927c6d8ad1f 936
baxterja 0:3927c6d8ad1f 937
baxterja 0:3927c6d8ad1f 938 counter++;
baxterja 0:3927c6d8ad1f 939
baxterja 0:3927c6d8ad1f 940 CyclesInState++;
baxterja 0:3927c6d8ad1f 941
baxterja 0:3927c6d8ad1f 942
baxterja 0:3927c6d8ad1f 943 execute_DSP();
baxterja 0:3927c6d8ad1f 944
baxterja 0:3927c6d8ad1f 945 if (CyclesInState <= PreCalculateCycles) {
baxterja 0:3927c6d8ad1f 946 NumInBlock = 0;
baxterja 0:3927c6d8ad1f 947 mag_total = 0;
baxterja 0:3927c6d8ad1f 948 real_ip_total = 0;
baxterja 0:3927c6d8ad1f 949 imag_ip_total = 0;
baxterja 0:3927c6d8ad1f 950
baxterja 0:3927c6d8ad1f 951 max_0 = -1;
baxterja 0:3927c6d8ad1f 952 max_1 = -1;
baxterja 0:3927c6d8ad1f 953 min_0 = 65536;
baxterja 0:3927c6d8ad1f 954 min_1 = 65536;
baxterja 0:3927c6d8ad1f 955 }
baxterja 0:3927c6d8ad1f 956 else {
baxterja 0:3927c6d8ad1f 957 NumInBlock++;
baxterja 0:3927c6d8ad1f 958 if (NumInBlock >= NumCalculatedAverages) {
baxterja 0:3927c6d8ad1f 959 mag_result = calc_mag;
baxterja 0:3927c6d8ad1f 960 phase_result = calc_phase;
baxterja 0:3927c6d8ad1f 961 final_mag = mag_result;
baxterja 0:3927c6d8ad1f 962 final_phase = phase_result;
baxterja 0:3927c6d8ad1f 963 NumInBlock = 0;
baxterja 0:3927c6d8ad1f 964 mag_total = 0;
baxterja 0:3927c6d8ad1f 965 real_ip_total = 0;
baxterja 0:3927c6d8ad1f 966 imag_ip_total = 0;
baxterja 0:3927c6d8ad1f 967 printf("Coeficient%f Phase%f\n\r", final_mag, final_phase);
baxterja 0:3927c6d8ad1f 968 }
baxterja 0:3927c6d8ad1f 969 }
baxterja 0:3927c6d8ad1f 970
baxterja 0:3927c6d8ad1f 971
baxterja 0:3927c6d8ad1f 972 value[0] = ADC0_RA;//Read adc
baxterja 0:3927c6d8ad1f 973 value[1] = ADC1_RA;//Read adc
baxterja 0:3927c6d8ad1f 974 //printf("%f %f\n\r", value[0], value[1]);
baxterja 0:3927c6d8ad1f 975 ADC_reading = false;//lower flag
baxterja 0:3927c6d8ad1f 976
baxterja 0:3927c6d8ad1f 977 }// end while(true)
baxterja 0:3927c6d8ad1f 978 }// end main