Dependencies:   mbed-dsp mbed

Fork of DSP_200kHz by Mazzeo Research Group

Committer:
timmey9
Date:
Sat Jan 31 16:44:40 2015 +0000
Revision:
47:54fafe151669
Parent:
46:a015ebf4663b
Child:
48:29f14bc30ba6
Quad decoder works and a self test is built in.  ADC one shot and continuous now working.  DMA still working.  Need to fix PDB.

Who changed what in which revision?

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