Impedance Fast Circuitry Software

Dependencies:   mbed-dsp mbed

Fork of DSP_200kHz by Mazzeo Research Group

main.cpp

Committer:
bmazzeo
Date:
2016-02-17
Revision:
55:2526b3317bc8
Parent:
54:1697dc574b96
Child:
56:7e08cbc3a4f1

File content as of revision 55:2526b3317bc8:

#include "mbed.h"

// Sampling
#include "DMA_sampling/adc.h"
#include "DMA_sampling/dac.h"
#include "DMA_sampling/pdb.h"

// for debug purposes
Serial pc(USBTX, USBRX);
DigitalOut led_red(LED_RED);
DigitalOut led_green(LED_GREEN);
DigitalOut led_blue(LED_BLUE);

// 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[];

using namespace std;
 
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
    
    
    led_green = 1;
    
    pc.printf("\r\n\r\n\r\n");
    
    while(1) {
        //DMA_TCD2_CSR
        //int counter = 0;
        //pc.printf("Sample_array0[1]:%d\r\n",sample_array0[counter]);
        //ADC0_SC1A = 0x0C; //AIEN = 0, DIFF = 0, Channel = AD12 (PTB2)
        //ADC1_SC1A = 0x0E; //AIEN = 0, DIFF = 0, Channel = AD14 (PTB10)  
        //while( (ADC0_SC1A&ADC_SC1_COCO_MASK)) {}
        //while( (ADC1_SC1A&ADC_SC1_COCO_MASK)) {}
        //pc.printf("ADC0_RA:%d\r\n", ADC0_RA);
        //pc.printf("ADC1_RA:%d\r\n", ADC1_RA);
        
        //for(int i = 0; i < len; i++) pc.printf("A%i: %d\t %d\r\n",i,sample_array0[i],sample_array1[i]);
        //for(int i = 0; i < len; i++) pc.printf("B%i: %d\t %d\r\n",i,static_input_array0[i],static_input_array1[i]);
        
        //wait_ms(1000);
/*        int store_var = DMA_TCD2_CSR;
        if (store_var == 0x220)
            {
                DAC0_DAT0H = 0x0F;
                wait_us(10);
                //DMA_TCD0_CSR = 0x260;
            }
        if (store_var == 0x260)
            {
                DAC0_DAT0H = 0x00;
                wait_us(10);
            }
        
        //int store_var = DMA_TCD0_CSR;
        //pc.printf("DMA0: %x\r\n", DMA_TCD0_CSR);
        //pc.printf("DMA1: %x\r\n", DMA_TCD1_CSR);
        //pc.printf("DMA2: %x\r\n", DMA_TCD2_CSR);
        //pc.printf("DMA3: %x\r\n", DMA_TCD3_CSR);
        
        //for(int i = 0; i < len; i++) pc.printf("B%i: %d\t %d\r\n",i,static_input_array0[i],static_input_array1[i]);
        for (int i = 0: i < len; i++) 
        {
            static_output_array[i] = static_input_array0[i] >> 4;
        }
        
        //wait_us(100);
  */
        if(pc.readable() > 0) {
            char temp = pc.getc();
            
            switch(temp) {
                case 'F': // clear the samples
                case 'f':
                    for(int i = 0; i < len; i++) {sample_array0[i] = 0; sample_array1[i] = 0;}
                    pc.printf("Arrays cleared\r\n");
                    // then display the samples
                    break;
                case 'S': // display what's been sampled
                case 's':
                    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);
                    pc.printf("\r\n");
                    break;

                case 'D': // DMA debug
                case 'd':
                    pc.printf("DMA Status:\r\n");
                    pc.printf("DMA_TCD0_SOFF: %x\r\n", DMA_TCD0_SOFF);
                    pc.printf("DMA_TCD1_SOFF: %x\r\n", DMA_TCD1_SOFF);
                    pc.printf("DMA_TCD0_CITER_ELINKNO: %x\r\n", DMA_TCD0_CITER_ELINKNO);
                    pc.printf("DMA_TCD0_BITER_ELINKNO: %x\r\n", DMA_TCD0_BITER_ELINKNO);
                    pc.printf("DMA_TCD1_CITER_ELINKNO: %x\r\n", DMA_TCD1_CITER_ELINKNO);
                    pc.printf("DMA_TCD1_BITER_ELINKNO: %x\r\n", DMA_TCD1_BITER_ELINKNO);
                    pc.printf("DMA_TCD2_CITER_ELINKNO: %x\r\n", DMA_TCD2_CITER_ELINKNO);
                    pc.printf("DMA_TCD2_BITER_ELINKNO: %x\r\n", DMA_TCD2_BITER_ELINKNO);
                    pc.printf("DMA_TCD3_CITER_ELINKNO: %x\r\n", DMA_TCD3_CITER_ELINKNO);
                    pc.printf("DMA_TCD3_BITER_ELINKNO: %x\r\n", DMA_TCD3_BITER_ELINKNO);
                    
                    break;
                
                    
                // Programmable Delay Block debug
                case 'B':
                case 'b':
                    pc.printf("Started PDB...samples being taken\r\n");
                    pdb_start();
                    break;
                case 'K':
                case 'k':
                    pc.printf("Stopped PDB\r\n");
                    pdb_stop();
                    break;
                case 'V':
                case 'v':
                    pc.printf("PDB: %i\r\n",PDB0_CNT);
                    break;
            }
        }
    
        
    }
}