Impedance Fast Circuitry Software

Dependencies:   mbed-dsp mbed

Fork of DSP_200kHz by Mazzeo Research Group

Committer:
timmey9
Date:
Sat Jan 31 07:25:52 2015 +0000
Revision:
45:d591d138cdeb
Parent:
44:41c262caf898
Child:
46:a015ebf4663b
Quadrature decoder is working.

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 22:523e316cbe70 18
timmey9 45:d591d138cdeb 19 extern int len;
timmey9 45:d591d138cdeb 20 extern uint16_t sample_array0[];
timmey9 45:d591d138cdeb 21 extern uint16_t sample_array1[];
timmey9 45:d591d138cdeb 22 extern uint16_t angle_array[];
timmey9 45:d591d138cdeb 23 extern DigitalIn AMT20_A; // input for quadrature encoding from angle encoder
timmey9 45:d591d138cdeb 24 extern DigitalIn AMT20_B; // input for quadrature encoding from angle encoder
timmey9 41:3e0623d81b9a 25
timmey9 41:3e0623d81b9a 26
timmey9 22:523e316cbe70 27 // Declaration of functions
timmey9 39:82dc3daecf32 28
timmey9 22:523e316cbe70 29 int rotary_count = 0;
timmey9 22:523e316cbe70 30 using namespace std;
timmey9 17:2f978f823020 31
emilmont 7:65188f4a8c25 32 int main() {
timmey9 22:523e316cbe70 33 led_blue = 1;
timmey9 35:df40c4566826 34 led_green = 1;
timmey9 18:b17ddeeb1c09 35 led_red = 1;
timmey9 34:44cc9b76a507 36
timmey9 18:b17ddeeb1c09 37 pc.baud(230400);
timmey9 34:44cc9b76a507 38 pc.printf("Starting\r\n");
timmey9 27:8c2b30c855d1 39
timmey9 45:d591d138cdeb 40 quad_init();
timmey9 45:d591d138cdeb 41 adc_init(); // always initialize adc before dma
timmey9 45:d591d138cdeb 42 dma_init();
timmey9 45:d591d138cdeb 43 pdb_init();
timmey9 45:d591d138cdeb 44
timmey9 38:ec3b16c130d7 45
timmey9 40:bd6d8c35e822 46 pc.printf("\r\n\r\n\r\n");
timmey9 37:8bdc71f3e874 47
timmey9 34:44cc9b76a507 48 while(1) {
timmey9 43:c593a8b9688f 49
timmey9 36:07d8a3143967 50 rotary_count++;
timmey9 43:c593a8b9688f 51 if(rotary_count & 0x01) AMT20_A.mode(PullUp);
timmey9 43:c593a8b9688f 52 else AMT20_A.mode(PullDown);
timmey9 43:c593a8b9688f 53 if((rotary_count>>1) & 0x01) AMT20_B.mode(PullUp);
timmey9 43:c593a8b9688f 54 else AMT20_B.mode(PullDown);
timmey9 43:c593a8b9688f 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 40:bd6d8c35e822 65 case 'a':
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 45:d591d138cdeb 72 for(int i = 0; i < len; i++) pc.printf("%i: %f\t %f\t %i%i\r\n",i,sample_array0[i]*3.3/65535,sample_array1[i]*3.3/65535, (angle_array[i]>>1)&0x01, angle_array[i]&0x01);
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 45:d591d138cdeb 77 adc_single_sample();
timmey9 45:d591d138cdeb 78 break;
timmey9 45:d591d138cdeb 79 case 'F':
timmey9 42:52a92a8d2cc7 80 case 'f':
timmey9 45:d591d138cdeb 81 for(int i = 0; i < len; i++) {sample_array0[i] = 0; sample_array1[i] = 0; angle_array[i] = 0;}
timmey9 42:52a92a8d2cc7 82 pc.printf("Arrays cleared\r\n");
timmey9 40:bd6d8c35e822 83 break;
timmey9 45:d591d138cdeb 84 case 'R':
timmey9 43:c593a8b9688f 85 case 'r':
timmey9 43:c593a8b9688f 86 pc.printf("Quadrature: %i%i \r\n", (HW_GPIO_PDIR_RD(HW_PORTC)>>1)&0x01, HW_GPIO_PDIR_RD(HW_PORTC)&0x01);
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 45:d591d138cdeb 93 pdb_stop();
timmey9 45:d591d138cdeb 94 break;
timmey9 34:44cc9b76a507 95 }
timmey9 34:44cc9b76a507 96 }
timmey9 17:2f978f823020 97 }
timmey9 42:52a92a8d2cc7 98 }