Test usb connection

Dependencies:   BufferedSerial MODSERIAL mbed

You can find more infos in this notebook: HERE

Committer:
edodm85
Date:
Sat Aug 20 17:33:55 2016 +0000
Revision:
0:6da981eb59da
First commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
edodm85 0:6da981eb59da 1 #define Modserial
edodm85 0:6da981eb59da 2
edodm85 0:6da981eb59da 3 #include "mbed.h"
edodm85 0:6da981eb59da 4
edodm85 0:6da981eb59da 5 #ifdef Modserial
edodm85 0:6da981eb59da 6 #include "MODSERIAL.h"
edodm85 0:6da981eb59da 7 #else
edodm85 0:6da981eb59da 8 //#include "BufferedSerial.h"
edodm85 0:6da981eb59da 9 #endif
edodm85 0:6da981eb59da 10
edodm85 0:6da981eb59da 11
edodm85 0:6da981eb59da 12 DigitalOut led1(LED1);
edodm85 0:6da981eb59da 13 DigitalOut led4(LED4);
edodm85 0:6da981eb59da 14
edodm85 0:6da981eb59da 15 #ifdef Modserial
edodm85 0:6da981eb59da 16 MODSERIAL pc(USBTX,USBRX);
edodm85 0:6da981eb59da 17 #else
edodm85 0:6da981eb59da 18 RawSerial pc(USBTX,USBRX);
edodm85 0:6da981eb59da 19 #endif
edodm85 0:6da981eb59da 20
edodm85 0:6da981eb59da 21
edodm85 0:6da981eb59da 22 bool new_send = false;
edodm85 0:6da981eb59da 23 void parse_cmd(int sizeCMD);
edodm85 0:6da981eb59da 24 char bufferRX[50];
edodm85 0:6da981eb59da 25 int i = 0;
edodm85 0:6da981eb59da 26
edodm85 0:6da981eb59da 27
edodm85 0:6da981eb59da 28 // interrupt call
edodm85 0:6da981eb59da 29 #ifdef Modserial
edodm85 0:6da981eb59da 30 void rxCallback(MODSERIAL_IRQ_INFO *q)
edodm85 0:6da981eb59da 31 {
edodm85 0:6da981eb59da 32 new_send = true;
edodm85 0:6da981eb59da 33 }
edodm85 0:6da981eb59da 34 #else
edodm85 0:6da981eb59da 35 void rxCallback()
edodm85 0:6da981eb59da 36 {
edodm85 0:6da981eb59da 37 led1 = 1;
edodm85 0:6da981eb59da 38
edodm85 0:6da981eb59da 39 char test = pc.getc();
edodm85 0:6da981eb59da 40 if(test != '\n')
edodm85 0:6da981eb59da 41 {
edodm85 0:6da981eb59da 42 bufferRX[i] = test;
edodm85 0:6da981eb59da 43 i++;
edodm85 0:6da981eb59da 44 }else
edodm85 0:6da981eb59da 45 {
edodm85 0:6da981eb59da 46 new_send = true;
edodm85 0:6da981eb59da 47 }
edodm85 0:6da981eb59da 48 led1 = 0;
edodm85 0:6da981eb59da 49 return;
edodm85 0:6da981eb59da 50 }
edodm85 0:6da981eb59da 51 #endif
edodm85 0:6da981eb59da 52
edodm85 0:6da981eb59da 53
edodm85 0:6da981eb59da 54
edodm85 0:6da981eb59da 55
edodm85 0:6da981eb59da 56 int main()
edodm85 0:6da981eb59da 57 {
edodm85 0:6da981eb59da 58 pc.baud(9600);
edodm85 0:6da981eb59da 59 pc.printf("SystemCoreClock: %dMHz\r\n", SystemCoreClock/1000000); // print the clock frequency
edodm85 0:6da981eb59da 60 led4 = 0;
edodm85 0:6da981eb59da 61 int n = 0;
edodm85 0:6da981eb59da 62
edodm85 0:6da981eb59da 63
edodm85 0:6da981eb59da 64 #ifdef Modserial
edodm85 0:6da981eb59da 65 pc.attach(&rxCallback);
edodm85 0:6da981eb59da 66 #else
edodm85 0:6da981eb59da 67 pc.attach(&rxCallback, Serial::RxIrq);
edodm85 0:6da981eb59da 68 #endif
edodm85 0:6da981eb59da 69
edodm85 0:6da981eb59da 70
edodm85 0:6da981eb59da 71 while(1)
edodm85 0:6da981eb59da 72 {
edodm85 0:6da981eb59da 73 #ifdef Modserial
edodm85 0:6da981eb59da 74 if(new_send)
edodm85 0:6da981eb59da 75 {
edodm85 0:6da981eb59da 76 int i = 0;
edodm85 0:6da981eb59da 77 led1 = 1;
edodm85 0:6da981eb59da 78
edodm85 0:6da981eb59da 79 while(pc.readable())
edodm85 0:6da981eb59da 80 {
edodm85 0:6da981eb59da 81 bufferRX[i] = pc.getc();
edodm85 0:6da981eb59da 82 i++;
edodm85 0:6da981eb59da 83 }
edodm85 0:6da981eb59da 84 parse_cmd(i);
edodm85 0:6da981eb59da 85 led1 = 0;
edodm85 0:6da981eb59da 86 }
edodm85 0:6da981eb59da 87 #else
edodm85 0:6da981eb59da 88 if(new_send)
edodm85 0:6da981eb59da 89 {
edodm85 0:6da981eb59da 90
edodm85 0:6da981eb59da 91 parse_cmd(i);
edodm85 0:6da981eb59da 92
edodm85 0:6da981eb59da 93 memset(bufferRX, 0, sizeof(bufferRX));
edodm85 0:6da981eb59da 94 new_send = false;
edodm85 0:6da981eb59da 95 i = 0;
edodm85 0:6da981eb59da 96 }
edodm85 0:6da981eb59da 97 #endif
edodm85 0:6da981eb59da 98 wait_ms(50);
edodm85 0:6da981eb59da 99 n++;
edodm85 0:6da981eb59da 100 if(n == 10)
edodm85 0:6da981eb59da 101 {
edodm85 0:6da981eb59da 102 led4 = !led4;
edodm85 0:6da981eb59da 103 n = 0;
edodm85 0:6da981eb59da 104 }
edodm85 0:6da981eb59da 105 }
edodm85 0:6da981eb59da 106 }
edodm85 0:6da981eb59da 107
edodm85 0:6da981eb59da 108
edodm85 0:6da981eb59da 109
edodm85 0:6da981eb59da 110
edodm85 0:6da981eb59da 111
edodm85 0:6da981eb59da 112 void parse_cmd(int sizeCMD)
edodm85 0:6da981eb59da 113 {
edodm85 0:6da981eb59da 114 new_send = false;
edodm85 0:6da981eb59da 115
edodm85 0:6da981eb59da 116
edodm85 0:6da981eb59da 117 pc.printf("bufferRX: %s\r\n", bufferRX);
edodm85 0:6da981eb59da 118
edodm85 0:6da981eb59da 119
edodm85 0:6da981eb59da 120 if(strcmp("ciao", bufferRX) == 0)
edodm85 0:6da981eb59da 121 {
edodm85 0:6da981eb59da 122 pc.printf("Test OK\r\n");
edodm85 0:6da981eb59da 123 }
edodm85 0:6da981eb59da 124
edodm85 0:6da981eb59da 125 memset(bufferRX, 0, sizeof(bufferRX));
edodm85 0:6da981eb59da 126 }