Impedance Fast Circuitry Software

Dependencies:   mbed-dsp mbed

Fork of DSP_200kHz by Mazzeo Research Group

Revision:
67:ec0c58490ce6
Parent:
66:72c5c24e532c
Child:
68:e5031c18fefb
--- a/main.cpp	Fri Feb 26 20:02:36 2016 +0000
+++ b/main.cpp	Fri Feb 26 22:53:32 2016 +0000
@@ -5,6 +5,10 @@
 #include "DMA_sampling/dac.h"
 #include "DMA_sampling/pdb.h"
 
+// DSP
+#include "dsp.h"
+
+
 // for debug purposes
 Serial pc(USBTX, USBRX);
 DigitalOut led_red(LED_RED);
@@ -17,19 +21,24 @@
 
 // defined in dma.cpp
 extern int len;
-extern uint16_t sample_array0[];
-extern uint16_t sample_array1[];
-
 extern uint16_t static_input_array0[];
 extern uint16_t static_input_array1[];
-
 extern uint16_t static_output_array0[];
-extern uint16_t output_array0[];
-
 extern uint16_t sampling_status;
 
-using namespace std;
- 
+// To set up FIR filtering
+#define TOTAL_TAPS 8
+#define STATE_LENGTH  71
+#define BUFFER_LENGTH 64
+uint16_t numTaps = TOTAL_TAPS;
+float State[STATE_LENGTH]= {0};
+float Coeffs[TOTAL_TAPS] = {0.25, 0, 0, 0, 0, 0, 0, 0};
+arm_fir_instance_f32 S = {numTaps, State, Coeffs};
+
+float filter_input_array[BUFFER_LENGTH] = {0};
+float filter_output_array[BUFFER_LENGTH] = {0};
+
+
 int main() {
     led_blue = 1;
     led_green = 1;
@@ -44,7 +53,7 @@
     pc.printf("ADC Initialized\r\n");
     dma_init(); // initializes DMAs
     dma_reset(); // This clears any DMA triggers that may have gotten things into a different state
-    
+    pc.printf("Buffer Size: %i\r\n", len);
     
     led_green = 1;
     
@@ -91,7 +100,30 @@
                     status_1 = 1;
                     for(int i = 0; i < len; i++) 
                     {
-                        static_output_array0[i] = static_input_array0[i] >> 4;                        
+                        //static_output_array0[i] = static_input_array0[i] >> 4;                        
+                        //filter_input_array[i] = (float) (((int) static_input_array0[i]) - 0x8000);
+                        filter_input_array[i] = (float) static_input_array0[i];
+                    }
+                    
+                    //filter_input_array[0] = (float) static_input_array0[0];
+                    
+                    //arm_fir_f32(&S, filter_input_array, filter_output_array, len);
+                    
+                    for(int i = 0; i < len; i++) 
+                    {
+                        //static_output_array0[i] = static_input_array0[i] >> 4;                        
+                        //filter_output_array[i] = 0.25 * filter_input_array[i];
+                        filter_output_array[i] = 0.0625 * filter_input_array[i];
+                    }
+                    
+                    
+                    for(int i = 0; i < len; i++) 
+                    {
+                        //static_output_array0[i] = static_input_array0[i] >> 4;                        
+                        //static_output_array0[i] = (uint16_t) (( (int) filter_output_array[i] ) + 0x800);
+                        static_output_array0[i] = (uint16_t) filter_output_array[i];
+                        //static_output_array0[i] = (uint16_t) filter_input_array[i];
+                        //static_output_array0[i] = static_input_array0[i] >> 4;
                     }                    
                     status_1 = 0;
                 }