Dependencies:   mbed-dsp mbed

Fork of DSP_200kHz by Mazzeo Research Group

Committer:
timmey9
Date:
Sat Jan 31 18:38:17 2015 +0000
Revision:
48:29f14bc30ba6
Parent:
47:54fafe151669
Child:
49:4dcf4717a8bb
Works if you don't do single sample first.

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 18:b17ddeeb1c09 13
timmey9 22:523e316cbe70 14 AngleEncoder angle_encoder(PTD2, PTD3, PTD1, PTD0, 8, 0, 1000000); // mosi, miso, sclk, cs, bit_width, mode, hz
timmey9 47:54fafe151669 15 DigitalOut quadA(PTC17);
timmey9 47:54fafe151669 16 DigitalOut quadB(PTC16);
timmey9 45:d591d138cdeb 17 extern int len;
timmey9 45:d591d138cdeb 18 extern uint16_t sample_array0[];
timmey9 45:d591d138cdeb 19 extern uint16_t sample_array1[];
timmey9 45:d591d138cdeb 20 extern uint16_t angle_array[];
timmey9 41:3e0623d81b9a 21
timmey9 46:a015ebf4663b 22 bool switcher = false;
timmey9 39:82dc3daecf32 23
timmey9 22:523e316cbe70 24 using namespace std;
timmey9 17:2f978f823020 25
emilmont 7:65188f4a8c25 26 int main() {
timmey9 22:523e316cbe70 27 led_blue = 1;
timmey9 35:df40c4566826 28 led_green = 1;
timmey9 18:b17ddeeb1c09 29 led_red = 1;
timmey9 47:54fafe151669 30 quadA = 0;
timmey9 47:54fafe151669 31 quadB = 0;
timmey9 34:44cc9b76a507 32
timmey9 18:b17ddeeb1c09 33 pc.baud(230400);
timmey9 34:44cc9b76a507 34 pc.printf("Starting\r\n");
timmey9 27:8c2b30c855d1 35
timmey9 45:d591d138cdeb 36 quad_init();
timmey9 45:d591d138cdeb 37 adc_init(); // always initialize adc before dma
timmey9 45:d591d138cdeb 38 dma_init();
timmey9 45:d591d138cdeb 39 pdb_init();
timmey9 45:d591d138cdeb 40
timmey9 46:a015ebf4663b 41 led_green = 1;
timmey9 38:ec3b16c130d7 42
timmey9 40:bd6d8c35e822 43 pc.printf("\r\n\r\n\r\n");
timmey9 37:8bdc71f3e874 44
timmey9 34:44cc9b76a507 45 while(1) {
timmey9 47:54fafe151669 46 // creates signals for the quad decoder to read for testing
timmey9 47:54fafe151669 47 quadA = !quadA;
timmey9 47:54fafe151669 48 for(int i = 0; i < 65535; i++) asm("nop");
timmey9 47:54fafe151669 49 quadB = !quadB;
timmey9 47:54fafe151669 50
timmey9 34:44cc9b76a507 51 if(pc.readable() > 0) {
timmey9 34:44cc9b76a507 52 char temp = pc.getc();
timmey9 34:44cc9b76a507 53
timmey9 34:44cc9b76a507 54 switch(temp) {
timmey9 45:d591d138cdeb 55 case 'G':
timmey9 45:d591d138cdeb 56 case 'g':
timmey9 45:d591d138cdeb 57 pc.printf("Quad Cnt: %i\r\n", quad_read());
timmey9 45:d591d138cdeb 58 break;
timmey9 45:d591d138cdeb 59 case 'A':
timmey9 46:a015ebf4663b 60 case 'a': // needs debugging
timmey9 45:d591d138cdeb 61 adc_start();
timmey9 45:d591d138cdeb 62 for(int i = 0; i < 1500; i++) asm("nop");
timmey9 45:d591d138cdeb 63 adc_stop();
timmey9 42:52a92a8d2cc7 64 // then proceed to 's' to display the array
timmey9 45:d591d138cdeb 65 case 'S':
timmey9 42:52a92a8d2cc7 66 case 's':
timmey9 46:a015ebf4663b 67 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 68 pc.printf("\r\n");
timmey9 42:52a92a8d2cc7 69 break;
timmey9 45:d591d138cdeb 70 case 'D':
timmey9 45:d591d138cdeb 71 case 'd':
timmey9 47:54fafe151669 72 adc_single_sample(); // trigger ADCs, which trigger DMA
timmey9 47:54fafe151669 73 DMA_TCD2_CSR |= DMA_CSR_START_MASK; // trigger encoder DMA
timmey9 45:d591d138cdeb 74 break;
timmey9 45:d591d138cdeb 75 case 'F':
timmey9 42:52a92a8d2cc7 76 case 'f':
timmey9 45:d591d138cdeb 77 for(int i = 0; i < len; i++) {sample_array0[i] = 0; sample_array1[i] = 0; angle_array[i] = 0;}
timmey9 42:52a92a8d2cc7 78 pc.printf("Arrays cleared\r\n");
timmey9 40:bd6d8c35e822 79 break;
timmey9 47:54fafe151669 80
timmey9 47:54fafe151669 81 // Programmable Delay Block debug
timmey9 45:d591d138cdeb 82 case 'B':
timmey9 45:d591d138cdeb 83 case 'b':
timmey9 45:d591d138cdeb 84 pdb_start();
timmey9 45:d591d138cdeb 85 break;
timmey9 45:d591d138cdeb 86 case 'K':
timmey9 45:d591d138cdeb 87 case 'k':
timmey9 47:54fafe151669 88 pc.printf("STOPPED\r\n");
timmey9 45:d591d138cdeb 89 pdb_stop();
timmey9 45:d591d138cdeb 90 break;
timmey9 47:54fafe151669 91 case 'V':
timmey9 47:54fafe151669 92 case 'v':
timmey9 47:54fafe151669 93 pc.printf("PDB: %i\r\n",PDB0_CNT);
timmey9 47:54fafe151669 94 break;
timmey9 34:44cc9b76a507 95 }
timmey9 34:44cc9b76a507 96 }
timmey9 17:2f978f823020 97 }
timmey9 42:52a92a8d2cc7 98 }