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:
46:a015ebf4663b
Parent:
45:d591d138cdeb
Child:
47:54fafe151669

File content as of revision 46:a015ebf4663b:

// Server code
#include "mbed.h"

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

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

AngleEncoder angle_encoder(PTD2, PTD3, PTD1, PTD0, 8, 0, 1000000); // mosi, miso, sclk, cs, bit_width, mode, hz

extern int len;
extern uint16_t sample_array0[];
extern uint16_t sample_array1[];
extern uint16_t angle_array[];

bool switcher = false;
// Declaration of functions

using namespace std;
 
int main() {
    led_blue = 1;
    led_green = 1;
    led_red = 1;
    
    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) {
        pc.printf("PDB0: %i\r",switcher);
        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();
                    DMA_TCD2_CSR |= DMA_CSR_START_MASK;
                    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;
                case 'R':
                case 'r':
                    pc.printf("Quadrature: %i%i \r\n", (HW_GPIO_PDIR_RD(HW_PORTC)>>1)&0x01, HW_GPIO_PDIR_RD(HW_PORTC)&0x01);
                case 'B':
                case 'b':
                    pdb_start();
                    break;
                case 'K':
                case 'k':
                    pdb_stop();
                    break;
            }
        }
    }
}