Jared Baxter
/
Impedance_Fast_Circuitry
Fork of DSP_200kHz by
main.cpp
- Committer:
- bmazzeo
- Date:
- 2017-05-05
- Revision:
- 68:e5031c18fefb
- Parent:
- 67:ec0c58490ce6
- Child:
- 69:014d4bbd4e03
File content as of revision 68:e5031c18fefb:
#include "mbed.h" // Sampling #include "DMA_sampling/adc.h" #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); DigitalOut led_green(LED_GREEN); DigitalOut led_blue(LED_BLUE); DigitalOut status_0(D0); DigitalOut status_1(D1); DigitalIn sw2(SW2); DigitalIn sw3(SW3); // defined in dma.cpp extern int len; extern uint16_t static_input_array0[]; extern uint16_t static_input_array1[]; extern uint16_t static_output_array0[]; extern uint16_t sampling_status; // 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] = {1, -1, 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; led_red = 1; pc.baud(230400); pc.printf("Starting\r\n"); pdb_init(); // Initalize PDB dac_init(); // initializes DAC adc_init(); // always initialize adc before dma 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; pc.printf("\r\n\r\n\r\n"); pdb_start(); while(1) { while(sampling_status == 0) { status_0 = 1; } sampling_status = 0; status_0 = 0; if(sw2) { if(sw3) { //Default PASSTHROUGH Condition status_1 = 1; for(int i = 0; i < len; i++) { static_output_array0[i] = static_input_array0[i] >> 4; } status_1 = 0; } else { // Can show that buttons are active - Serial link working status_1 = 1; pc.printf("DSP\r\n"); for(int i = 0; i < len; i++) { static_output_array0[i] = static_input_array0[i] >> 4; } status_1 = 0; } } else { // Here we can really put our DSP blocks status_1 = 1; for(int i = 0; i < len; i++) { //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) (((int)static_input_array0[i]) - 0x8000); } //filter_input_array[0] = (float) static_input_array0[0]; arm_fir_f32(&S, filter_input_array, filter_output_array, len); // Scale for output /* 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_output_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] + 0x8000) >> 4; //static_output_array0[i] = (uint16_t) filter_input_array[i]; //static_output_array0[i] = static_input_array0[i] >> 4; } status_1 = 0; } } }