Dependencies:   mbed-dsp mbed

Fork of DSP_200kHz by Mazzeo Research Group

Committer:
timmey9
Date:
Sat Jan 31 19:46:00 2015 +0000
Revision:
50:33524a27e08c
Parent:
49:4dcf4717a8bb
Child:
51:43143a3fc2d7
Continuous sampling started by the PCB is working.  It is successfully triggering ADC0, ADC1, and the DMA is doing its job for the ADCs and FTM quad decoder.

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 50:33524a27e08c 59 /*
timmey9 45:d591d138cdeb 60 case 'A':
timmey9 46:a015ebf4663b 61 case 'a': // needs debugging
timmey9 45:d591d138cdeb 62 adc_start();
timmey9 45:d591d138cdeb 63 for(int i = 0; i < 1500; i++) asm("nop");
timmey9 45:d591d138cdeb 64 adc_stop();
timmey9 50:33524a27e08c 65 // then proceed to 's' to display the array*/
timmey9 50:33524a27e08c 66 case 'F': // clear the samples
timmey9 50:33524a27e08c 67 case 'f':
timmey9 50:33524a27e08c 68 for(int i = 0; i < len; i++) {sample_array0[i] = 0; sample_array1[i] = 0; angle_array[i] = 0;}
timmey9 50:33524a27e08c 69 pc.printf("Arrays cleared\r\n");
timmey9 50:33524a27e08c 70 // then display the samples
timmey9 50:33524a27e08c 71 case 'S': // display what's been sampled
timmey9 42:52a92a8d2cc7 72 case 's':
timmey9 46:a015ebf4663b 73 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 74 pc.printf("\r\n");
timmey9 42:52a92a8d2cc7 75 break;
timmey9 50:33524a27e08c 76 /*
timmey9 45:d591d138cdeb 77 case 'D':
timmey9 45:d591d138cdeb 78 case 'd':
timmey9 47:54fafe151669 79 adc_single_sample(); // trigger ADCs, which trigger DMA
timmey9 47:54fafe151669 80 DMA_TCD2_CSR |= DMA_CSR_START_MASK; // trigger encoder DMA
timmey9 50:33524a27e08c 81 break;*/
timmey9 50:33524a27e08c 82
timmey9 50:33524a27e08c 83
timmey9 50:33524a27e08c 84
timmey9 50:33524a27e08c 85
timmey9 50:33524a27e08c 86
timmey9 50:33524a27e08c 87
timmey9 47:54fafe151669 88
timmey9 47:54fafe151669 89 // Programmable Delay Block debug
timmey9 45:d591d138cdeb 90 case 'B':
timmey9 45:d591d138cdeb 91 case 'b':
timmey9 50:33524a27e08c 92 pc.printf("Started PCB...samples being taken\r\n");
timmey9 45:d591d138cdeb 93 pdb_start();
timmey9 45:d591d138cdeb 94 break;
timmey9 45:d591d138cdeb 95 case 'K':
timmey9 45:d591d138cdeb 96 case 'k':
timmey9 50:33524a27e08c 97 pc.printf("Stopped PCB\r\n");
timmey9 45:d591d138cdeb 98 pdb_stop();
timmey9 45:d591d138cdeb 99 break;
timmey9 47:54fafe151669 100 case 'V':
timmey9 47:54fafe151669 101 case 'v':
timmey9 47:54fafe151669 102 pc.printf("PDB: %i\r\n",PDB0_CNT);
timmey9 47:54fafe151669 103 break;
timmey9 34:44cc9b76a507 104 }
timmey9 34:44cc9b76a507 105 }
timmey9 17:2f978f823020 106 }
timmey9 42:52a92a8d2cc7 107 }