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:
52:5a40cc58c4c2
Parent:
51:43143a3fc2d7
Child:
53:83a90a47c1fd

File content as of revision 52:5a40cc58c4c2:

#include "mbed.h"

// Sampling
#include "Sample/adc.h"
#include "Sample/pdb.h"
#include "Sample/quad.h"

#include "AngleEncoder.h"

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

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

// defined in dma.cpp
extern int len;
extern uint16_t sample_array0[];
extern uint16_t sample_array1[];
extern uint16_t angle_array[];

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(); // initialize FTM2 to quadrature decoder
    adc_init(); // always initialize adc before dma
    dma_init(); // initializes DMAs
    pdb_init(); // initialize PDB0 as the timer for ADCs and DMA2
    
    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 'F': // clear the samples
                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");
                    // then display the samples
                case 'S': // display what's been sampled
                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;
                
                    
                // Programmable Delay Block debug
                case 'B':
                case 'b':
                    pc.printf("Started PCB...samples being taken\r\n");
                    pdb_start();
                    break;
                case 'K':
                case 'k':
                    pc.printf("Stopped PCB\r\n");
                    pdb_stop();
                    break;
                case 'V':
                case 'v':
                    pc.printf("PDB: %i\r\n",PDB0_CNT);
                    break;
            }
        }
    }
}