Impedance Fast Circuitry Software

Dependencies:   mbed-dsp mbed

Fork of DSP_200kHz by Mazzeo Research Group

main.cpp

Committer:
timmey9
Date:
2015-01-31
Revision:
49:4dcf4717a8bb
Parent:
48:29f14bc30ba6
Child:
50:33524a27e08c

File content as of revision 49:4dcf4717a8bb:

#include "mbed.h"

#include "AngleEncoder.h"
#include "adc.h"
#include "pdb.h"
#include "quad.h"

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

AngleEncoder angle_encoder(PTD2, PTD3, PTD1, PTD0, 8, 0, 1000000); // mosi, miso, sclk, cs, bit_width, mode, hz
DigitalOut quadA(PTC17);
DigitalOut quadB(PTC16);
extern int len;
extern uint16_t sample_array0[];
extern uint16_t sample_array1[];
extern uint16_t angle_array[];

bool switcher = false;

using namespace std;
 
int main() {
    led_blue = 1;
    led_green = 1;
    led_red = 1;
    quadA = 0;
    quadB = 0;
    
    pc.baud(230400);
    pc.printf("Starting\r\n");
    
    quad_init();
    adc_init(); // always initialize adc before dma
    dma_init();
    pdb_init();
    
    led_green = 1;
    
    pc.printf("\r\n\r\n\r\n");
    
    while(1) {
        // creates signals for the quad decoder to read for testing
        quadA = !quadA;
        for(int i = 0; i < 65535; i++) asm("nop");
        quadB = !quadB;
        
        if(pc.readable() > 0) {
            char temp = pc.getc();
            
            switch(temp) {
                case 'G':
                case 'g':
                    pc.printf("Quad Cnt: %i\r\n", quad_read());
                    break;
                case 'A':
                case 'a': // needs debugging
                    adc_start();
                    for(int i = 0; i < 1500; i++) asm("nop");
                    adc_stop();
                    // then proceed to 's' to display the array
                case 'S':
                case 's':
                    for(int i = 0; i < len; i++) pc.printf("%i: %f\t %f\t %i\r\n",i,sample_array0[i]*3.3/65535,sample_array1[i]*3.3/65535, angle_array[i]);
                    pc.printf("\r\n");
                    break;
                case 'D':
                case 'd':
                    adc_single_sample(); // trigger ADCs, which trigger DMA
                    DMA_TCD2_CSR |= DMA_CSR_START_MASK; // trigger encoder DMA
                    break;
                case 'F':
                case 'f':
                    for(int i = 0; i < len; i++) {sample_array0[i] = 0; sample_array1[i] = 0; angle_array[i] = 0;}
                    pc.printf("Arrays cleared\r\n");
                    break;
                    
                // Programmable Delay Block debug
                case 'B':
                case 'b':
                    pdb_start();
                    break;
                case 'K':
                case 'k':
                    pc.printf("STOPPED\r\n");
                    pdb_stop();
                    break;
                case 'V':
                case 'v':
                    pc.printf("PDB: %i\r\n",PDB0_CNT);
                    break;
                case 'P':
                case 'p':   
                    pc.printf("***********************\r\n");                                 
                    pc.printf("ADC0_SC1a: %08x\r\n",ADC0_SC1A);  //(0x0000004d)
                    pc.printf("ADC0_SC1b: %08x\r\n",ADC0_SC1B);  //(0x0000001f)
                    pc.printf("ADC0_CFG1: %08x\r\n",ADC0_CFG1);  //(0x0000000c)
                    pc.printf("ADC0_CFG2: %08x\r\n",ADC0_CFG2);  //(0x00000004)
                    pc.printf("ADC0_RA:   %08x\r\n",ADC0_RA);    //(0x00000000)
                    pc.printf("ADC0_RB:   %08x\r\n",ADC0_RB);    //(0x00000000)
                    pc.printf("ADC0_SC2:  %08x\r\n",ADC0_SC2);   //(0x00000044)
                    pc.printf("ADC0_SC3:  %08x\r\n\n",ADC0_SC3); //(0x00000000)
                    
                    pc.printf("ADC1_SC1a: %08x\r\n",ADC1_SC1A);  //(0x0000004d)
                    pc.printf("ADC1_SC1b: %08x\r\n",ADC1_SC1B);  //(0x0000001f)
                    pc.printf("ADC1_CFG1: %08x\r\n",ADC1_CFG1);  //(0x0000000c)
                    pc.printf("ADC1_CFG2: %08x\r\n",ADC1_CFG2);  //(0x00000004)
                    pc.printf("ADC1_RA:   %08x\r\n",ADC1_RA);    //(0x00000000)
                    pc.printf("ADC1_RB:   %08x\r\n",ADC1_RB);    //(0x00000000)
                    pc.printf("ADC1_SC2:  %08x\r\n",ADC1_SC2);   //(0x00000044)
                    pc.printf("ADC1_SC3:  %08x\r\n\n",ADC1_SC3); //(0x00000000)
                    
                    pc.printf("PDB0_SC:       %08x\r\n",PDB0_SC);
                    pc.printf("PDB0_MOD:      %08x\r\n",PDB0_MOD);
                    pc.printf("PDB0_CNT:      %08x\r\n",PDB0_CNT);
                    pc.printf("PDB0_IDLY:     %08x\r\n",PDB0_IDLY);
                    pc.printf("PDB0_CH0C1:    %08x\r\n",PDB0_CH0C1);
                    pc.printf("PDB0_CH0S:     %08x\r\n",PDB0_CH0S);
                    pc.printf("PDB0_CH0DLY0:  %08x\r\n",PDB0_CH0DLY0);
                    pc.printf("PDB0_CH0DLY1:  %08x\r\n",PDB0_CH0DLY1);
                    pc.printf("PDB0_CH1C1:    %08x\r\n",PDB0_CH1C1);
                    pc.printf("PDB0_CH1S:     %08x\r\n",PDB0_CH1S);
                    pc.printf("PDB0_CH1DLY0:  %08x\r\n",PDB0_CH1DLY0);
                    pc.printf("PDB0_CH1DLY1:  %08x\r\n\n",PDB0_CH1DLY1);
                    
                    pc.printf("DMA_CR: %08x\r\n", DMA_CR);
                    pc.printf("DMA_ES: %08x\r\n", DMA_ES);
                    pc.printf("DMA_ERQ: %08x\r\n", DMA_ERQ);
                    pc.printf("DMA_EEI: %08x\r\n", DMA_EEI);
                    pc.printf("DMA_CEEI: %02x\r\n", DMA_CEEI);
                    pc.printf("DMA_SEEI: %02x\r\n", DMA_SEEI);
                    pc.printf("DMA_CERQ: %02x\r\n", DMA_CERQ);
                    pc.printf("DMA_SERQ: %02x\r\n", DMA_SERQ);
                    pc.printf("DMA_CDNE: %02x\r\n", DMA_CDNE);
                    pc.printf("DMA_SSRT: %02x\r\n", DMA_SSRT);
                    pc.printf("DMA_CERR: %02x\r\n", DMA_CERR);
                    pc.printf("DMA_CINT: %02x\r\n", DMA_CINT);
                    pc.printf("DMA_INT: %08x\r\n", DMA_INT);
                    pc.printf("DMA_ERR: %08x\r\n", DMA_ERR);
                    pc.printf("DMA_HRS: %08x\r\n", DMA_HRS);
                    pc.printf("***********************\r\n");
                    break;
            }
        }
    }
}