Dependencies:   mbed-dsp mbed

Fork of DSP_200kHz by Mazzeo Research Group

Committer:
timmey9
Date:
Sat Jan 31 19:16:22 2015 +0000
Revision:
49:4dcf4717a8bb
Parent:
48:29f14bc30ba6
Child:
50:33524a27e08c
Not working for some reason.  I'm gonna revert to Revision 48.

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 49:4dcf4717a8bb 95 case 'P':
timmey9 49:4dcf4717a8bb 96 case 'p':
timmey9 49:4dcf4717a8bb 97 pc.printf("***********************\r\n");
timmey9 49:4dcf4717a8bb 98 pc.printf("ADC0_SC1a: %08x\r\n",ADC0_SC1A); //(0x0000004d)
timmey9 49:4dcf4717a8bb 99 pc.printf("ADC0_SC1b: %08x\r\n",ADC0_SC1B); //(0x0000001f)
timmey9 49:4dcf4717a8bb 100 pc.printf("ADC0_CFG1: %08x\r\n",ADC0_CFG1); //(0x0000000c)
timmey9 49:4dcf4717a8bb 101 pc.printf("ADC0_CFG2: %08x\r\n",ADC0_CFG2); //(0x00000004)
timmey9 49:4dcf4717a8bb 102 pc.printf("ADC0_RA: %08x\r\n",ADC0_RA); //(0x00000000)
timmey9 49:4dcf4717a8bb 103 pc.printf("ADC0_RB: %08x\r\n",ADC0_RB); //(0x00000000)
timmey9 49:4dcf4717a8bb 104 pc.printf("ADC0_SC2: %08x\r\n",ADC0_SC2); //(0x00000044)
timmey9 49:4dcf4717a8bb 105 pc.printf("ADC0_SC3: %08x\r\n\n",ADC0_SC3); //(0x00000000)
timmey9 49:4dcf4717a8bb 106
timmey9 49:4dcf4717a8bb 107 pc.printf("ADC1_SC1a: %08x\r\n",ADC1_SC1A); //(0x0000004d)
timmey9 49:4dcf4717a8bb 108 pc.printf("ADC1_SC1b: %08x\r\n",ADC1_SC1B); //(0x0000001f)
timmey9 49:4dcf4717a8bb 109 pc.printf("ADC1_CFG1: %08x\r\n",ADC1_CFG1); //(0x0000000c)
timmey9 49:4dcf4717a8bb 110 pc.printf("ADC1_CFG2: %08x\r\n",ADC1_CFG2); //(0x00000004)
timmey9 49:4dcf4717a8bb 111 pc.printf("ADC1_RA: %08x\r\n",ADC1_RA); //(0x00000000)
timmey9 49:4dcf4717a8bb 112 pc.printf("ADC1_RB: %08x\r\n",ADC1_RB); //(0x00000000)
timmey9 49:4dcf4717a8bb 113 pc.printf("ADC1_SC2: %08x\r\n",ADC1_SC2); //(0x00000044)
timmey9 49:4dcf4717a8bb 114 pc.printf("ADC1_SC3: %08x\r\n\n",ADC1_SC3); //(0x00000000)
timmey9 49:4dcf4717a8bb 115
timmey9 49:4dcf4717a8bb 116 pc.printf("PDB0_SC: %08x\r\n",PDB0_SC);
timmey9 49:4dcf4717a8bb 117 pc.printf("PDB0_MOD: %08x\r\n",PDB0_MOD);
timmey9 49:4dcf4717a8bb 118 pc.printf("PDB0_CNT: %08x\r\n",PDB0_CNT);
timmey9 49:4dcf4717a8bb 119 pc.printf("PDB0_IDLY: %08x\r\n",PDB0_IDLY);
timmey9 49:4dcf4717a8bb 120 pc.printf("PDB0_CH0C1: %08x\r\n",PDB0_CH0C1);
timmey9 49:4dcf4717a8bb 121 pc.printf("PDB0_CH0S: %08x\r\n",PDB0_CH0S);
timmey9 49:4dcf4717a8bb 122 pc.printf("PDB0_CH0DLY0: %08x\r\n",PDB0_CH0DLY0);
timmey9 49:4dcf4717a8bb 123 pc.printf("PDB0_CH0DLY1: %08x\r\n",PDB0_CH0DLY1);
timmey9 49:4dcf4717a8bb 124 pc.printf("PDB0_CH1C1: %08x\r\n",PDB0_CH1C1);
timmey9 49:4dcf4717a8bb 125 pc.printf("PDB0_CH1S: %08x\r\n",PDB0_CH1S);
timmey9 49:4dcf4717a8bb 126 pc.printf("PDB0_CH1DLY0: %08x\r\n",PDB0_CH1DLY0);
timmey9 49:4dcf4717a8bb 127 pc.printf("PDB0_CH1DLY1: %08x\r\n\n",PDB0_CH1DLY1);
timmey9 49:4dcf4717a8bb 128
timmey9 49:4dcf4717a8bb 129 pc.printf("DMA_CR: %08x\r\n", DMA_CR);
timmey9 49:4dcf4717a8bb 130 pc.printf("DMA_ES: %08x\r\n", DMA_ES);
timmey9 49:4dcf4717a8bb 131 pc.printf("DMA_ERQ: %08x\r\n", DMA_ERQ);
timmey9 49:4dcf4717a8bb 132 pc.printf("DMA_EEI: %08x\r\n", DMA_EEI);
timmey9 49:4dcf4717a8bb 133 pc.printf("DMA_CEEI: %02x\r\n", DMA_CEEI);
timmey9 49:4dcf4717a8bb 134 pc.printf("DMA_SEEI: %02x\r\n", DMA_SEEI);
timmey9 49:4dcf4717a8bb 135 pc.printf("DMA_CERQ: %02x\r\n", DMA_CERQ);
timmey9 49:4dcf4717a8bb 136 pc.printf("DMA_SERQ: %02x\r\n", DMA_SERQ);
timmey9 49:4dcf4717a8bb 137 pc.printf("DMA_CDNE: %02x\r\n", DMA_CDNE);
timmey9 49:4dcf4717a8bb 138 pc.printf("DMA_SSRT: %02x\r\n", DMA_SSRT);
timmey9 49:4dcf4717a8bb 139 pc.printf("DMA_CERR: %02x\r\n", DMA_CERR);
timmey9 49:4dcf4717a8bb 140 pc.printf("DMA_CINT: %02x\r\n", DMA_CINT);
timmey9 49:4dcf4717a8bb 141 pc.printf("DMA_INT: %08x\r\n", DMA_INT);
timmey9 49:4dcf4717a8bb 142 pc.printf("DMA_ERR: %08x\r\n", DMA_ERR);
timmey9 49:4dcf4717a8bb 143 pc.printf("DMA_HRS: %08x\r\n", DMA_HRS);
timmey9 49:4dcf4717a8bb 144 pc.printf("***********************\r\n");
timmey9 49:4dcf4717a8bb 145 break;
timmey9 34:44cc9b76a507 146 }
timmey9 34:44cc9b76a507 147 }
timmey9 17:2f978f823020 148 }
timmey9 42:52a92a8d2cc7 149 }