Impedance Fast Circuitry Software

Dependencies:   mbed-dsp mbed

Fork of DSP_200kHz by Mazzeo Research Group

Committer:
timmey9
Date:
Sat Jan 31 20:17:58 2015 +0000
Revision:
51:43143a3fc2d7
Parent:
50:33524a27e08c
Child:
52:5a40cc58c4c2
Cleaned up the code a little bit.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
donatien 0:bb128f0e952f 1 #include "mbed.h"
timmey9 22:523e316cbe70 2
timmey9 22:523e316cbe70 3 #include "AngleEncoder.h"
timmey9 39:82dc3daecf32 4 #include "adc.h"
timmey9 45:d591d138cdeb 5 #include "pdb.h"
timmey9 48:29f14bc30ba6 6 #include "quad.h"
timmey9 22:523e316cbe70 7
timmey9 22:523e316cbe70 8 // for debug purposes
timmey9 18:b17ddeeb1c09 9 Serial pc(USBTX, USBRX);
timmey9 18:b17ddeeb1c09 10 DigitalOut led_red(LED_RED);
timmey9 18:b17ddeeb1c09 11 DigitalOut led_green(LED_GREEN);
timmey9 18:b17ddeeb1c09 12 DigitalOut led_blue(LED_BLUE);
timmey9 51:43143a3fc2d7 13 DigitalOut quadA(PTC17);
timmey9 51:43143a3fc2d7 14 DigitalOut quadB(PTC16);
timmey9 18:b17ddeeb1c09 15
timmey9 22:523e316cbe70 16 AngleEncoder angle_encoder(PTD2, PTD3, PTD1, PTD0, 8, 0, 1000000); // mosi, miso, sclk, cs, bit_width, mode, hz
timmey9 51:43143a3fc2d7 17
timmey9 45:d591d138cdeb 18 extern int len;
timmey9 45:d591d138cdeb 19 extern uint16_t sample_array0[];
timmey9 45:d591d138cdeb 20 extern uint16_t sample_array1[];
timmey9 45:d591d138cdeb 21 extern uint16_t angle_array[];
timmey9 41:3e0623d81b9a 22
timmey9 22:523e316cbe70 23 using namespace std;
timmey9 17:2f978f823020 24
emilmont 7:65188f4a8c25 25 int main() {
timmey9 22:523e316cbe70 26 led_blue = 1;
timmey9 35:df40c4566826 27 led_green = 1;
timmey9 18:b17ddeeb1c09 28 led_red = 1;
timmey9 47:54fafe151669 29 quadA = 0;
timmey9 47:54fafe151669 30 quadB = 0;
timmey9 34:44cc9b76a507 31
timmey9 18:b17ddeeb1c09 32 pc.baud(230400);
timmey9 34:44cc9b76a507 33 pc.printf("Starting\r\n");
timmey9 27:8c2b30c855d1 34
timmey9 51:43143a3fc2d7 35 quad_init(); // initialize FTM2 to quadrature decoder
timmey9 45:d591d138cdeb 36 adc_init(); // always initialize adc before dma
timmey9 51:43143a3fc2d7 37 dma_init(); // initializes DMAs
timmey9 51:43143a3fc2d7 38 pdb_init(); // initialize PDB0 as the timer for ADCs and DMA2
timmey9 45:d591d138cdeb 39
timmey9 46:a015ebf4663b 40 led_green = 1;
timmey9 38:ec3b16c130d7 41
timmey9 40:bd6d8c35e822 42 pc.printf("\r\n\r\n\r\n");
timmey9 37:8bdc71f3e874 43
timmey9 34:44cc9b76a507 44 while(1) {
timmey9 47:54fafe151669 45 // creates signals for the quad decoder to read for testing
timmey9 47:54fafe151669 46 quadA = !quadA;
timmey9 47:54fafe151669 47 for(int i = 0; i < 65535; i++) asm("nop");
timmey9 47:54fafe151669 48 quadB = !quadB;
timmey9 47:54fafe151669 49
timmey9 34:44cc9b76a507 50 if(pc.readable() > 0) {
timmey9 34:44cc9b76a507 51 char temp = pc.getc();
timmey9 34:44cc9b76a507 52
timmey9 34:44cc9b76a507 53 switch(temp) {
timmey9 45:d591d138cdeb 54 case 'G':
timmey9 45:d591d138cdeb 55 case 'g':
timmey9 45:d591d138cdeb 56 pc.printf("Quad Cnt: %i\r\n", quad_read());
timmey9 45:d591d138cdeb 57 break;
timmey9 50:33524a27e08c 58 case 'F': // clear the samples
timmey9 50:33524a27e08c 59 case 'f':
timmey9 50:33524a27e08c 60 for(int i = 0; i < len; i++) {sample_array0[i] = 0; sample_array1[i] = 0; angle_array[i] = 0;}
timmey9 50:33524a27e08c 61 pc.printf("Arrays cleared\r\n");
timmey9 50:33524a27e08c 62 // then display the samples
timmey9 50:33524a27e08c 63 case 'S': // display what's been sampled
timmey9 42:52a92a8d2cc7 64 case 's':
timmey9 46:a015ebf4663b 65 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]);
timmey9 42:52a92a8d2cc7 66 pc.printf("\r\n");
timmey9 42:52a92a8d2cc7 67 break;
timmey9 50:33524a27e08c 68
timmey9 50:33524a27e08c 69
timmey9 47:54fafe151669 70 // Programmable Delay Block debug
timmey9 45:d591d138cdeb 71 case 'B':
timmey9 45:d591d138cdeb 72 case 'b':
timmey9 50:33524a27e08c 73 pc.printf("Started PCB...samples being taken\r\n");
timmey9 45:d591d138cdeb 74 pdb_start();
timmey9 45:d591d138cdeb 75 break;
timmey9 45:d591d138cdeb 76 case 'K':
timmey9 45:d591d138cdeb 77 case 'k':
timmey9 50:33524a27e08c 78 pc.printf("Stopped PCB\r\n");
timmey9 45:d591d138cdeb 79 pdb_stop();
timmey9 45:d591d138cdeb 80 break;
timmey9 47:54fafe151669 81 case 'V':
timmey9 47:54fafe151669 82 case 'v':
timmey9 47:54fafe151669 83 pc.printf("PDB: %i\r\n",PDB0_CNT);
timmey9 47:54fafe151669 84 break;
timmey9 34:44cc9b76a507 85 }
timmey9 34:44cc9b76a507 86 }
timmey9 17:2f978f823020 87 }
timmey9 42:52a92a8d2cc7 88 }