Impedance Fast Circuitry Software

Dependencies:   mbed-dsp mbed

Fork of DSP_200kHz by Mazzeo Research Group

main.cpp

Committer:
bmazzeo
Date:
2016-02-23
Revision:
63:7903a33e2fd4
Parent:
61:a56cca07d4a6
Child:
64:bb4a4bd57681

File content as of revision 63:7903a33e2fd4:

#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);
DigitalOut status_0(D0);
DigitalOut status_1(D1);

// 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;
 
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");
    
    //pdb_start();
/*    while(1) 
        {
            while(sampling_status == 0)
            {   
                led_green = 1;
                status_0 = 1;
            }
        
            sampling_status = 0;
            led_green = 0;
            status_0 = 0;
        
            status_1 = 1;
            for(int i = 0; i < len; i++) 
                {
                    static_output_array0[i] = static_input_array0[i] >> 4;
                    //pc.printf("%i\r\n", static_input_array0[i]);
                }
            status_1 = 0;
        }
}
 
 */   
     while(1) 
        {
        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);
                    for(int i = len; i < len*2; 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,(float) 100, (float) 100);
                    pc.printf("\r\n");
                    //pc.printf("0: %f\t %f\t %f\t %f\r\n",0,sample_array0[0]*3.3/65535,sample_array1[0]*3.3/65535,static_input_array0[0]*3.3/65535,static_input_array1[0]*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_SADDR: %i\r\n", DMA_TCD0_SADDR);
                    pc.printf("DMA_TCD0_DADDR: %i\r\n", DMA_TCD0_DADDR);

                    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);
                    pc.printf("DMA Status:\r\n");
                    pc.printf("DMA_TCD4_SADDR: %i\r\n", DMA_TCD4_SADDR);
                    pc.printf("DMA_TCD4_DADDR: %i\r\n", DMA_TCD4_DADDR);
                    pc.printf("DMA_TCD4_CITER_ELINKNO: %x\r\n", DMA_TCD4_CITER_ELINKNO);
                    pc.printf("DMA_TCD4_BITER_ELINKNO: %x\r\n", DMA_TCD4_BITER_ELINKNO);
                    pc.printf("DMA_TCD5_SADDR: %i\r\n", DMA_TCD5_SADDR);
                    pc.printf("DMA_TCD5_DADDR: %i\r\n", DMA_TCD5_DADDR);
                    pc.printf("DMA_TCD5_CITER_ELINKNO: %x\r\n", DMA_TCD5_CITER_ELINKNO);
                    pc.printf("DMA_TCD5_BITER_ELINKNO: %x\r\n", DMA_TCD5_BITER_ELINKNO);
                    pc.printf("DMA_TCD6_CITER_ELINKNO: %x\r\n", DMA_TCD6_CITER_ELINKNO);
                    pc.printf("DMA_TCD6_BITER_ELINKNO: %x\r\n", DMA_TCD6_BITER_ELINKNO);
                    pc.printf("DMA_TCD7_CITER_ELINKNO: %x\r\n", DMA_TCD7_CITER_ELINKNO);
                    pc.printf("DMA_TCD7_BITER_ELINKNO: %x\r\n", DMA_TCD7_BITER_ELINKNO);
                    pc.printf("DMA_TCD8_CITER_ELINKNO: %x\r\n", DMA_TCD8_CITER_ELINKNO);
                    pc.printf("DMA_TCD8_BITER_ELINKNO: %x\r\n", DMA_TCD8_BITER_ELINKNO);
                    pc.printf("DMA_TCD9_CITER_ELINKNO: %x\r\n", DMA_TCD9_CITER_ELINKNO);
                    pc.printf("DMA_TCD9_BITER_ELINKNO: %x\r\n", DMA_TCD9_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 'T':
                case 't':
                    pc.printf("One step of PDB\r\n");
                    pdb_step();
                    break;
                case 'V':
                case 'v':
                    pc.printf("PDB: %i\r\n",PDB0_CNT);
                    break;
                }

            }
                
        }   

}