binary out test

Dependencies:   mbed

Committer:
mfurukawa
Date:
Tue Aug 07 00:10:40 2018 +0000
Revision:
1:4c8086e3045d
Parent:
0:33eee66305ae
binary stable (2ch, 6byte+2byteCR+LF);

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mfurukawa 0:33eee66305ae 1 #include "mbed.h"
mfurukawa 0:33eee66305ae 2
mfurukawa 1:4c8086e3045d 3 #define SampleFreq 1000 // [Hz]
mfurukawa 0:33eee66305ae 4
mfurukawa 0:33eee66305ae 5 // define serial objects
mfurukawa 0:33eee66305ae 6 Serial pc(USBTX, USBRX);
mfurukawa 0:33eee66305ae 7
mfurukawa 0:33eee66305ae 8 DigitalOut myled(LED1);
mfurukawa 0:33eee66305ae 9
mfurukawa 0:33eee66305ae 10 Ticker ticker;
mfurukawa 0:33eee66305ae 11 Timer timer;
mfurukawa 0:33eee66305ae 12
mfurukawa 0:33eee66305ae 13 unsigned int usCycle = 1000000/SampleFreq ;
mfurukawa 0:33eee66305ae 14 uint8_t dummy_code[6] = {0x01, 0x02, 0xF3, 0xF4, 0x85, 0x86} ;
mfurukawa 0:33eee66305ae 15 uint8_t u8buf[6];
mfurukawa 1:4c8086e3045d 16 uint16_t u16val[3];
mfurukawa 0:33eee66305ae 17
mfurukawa 0:33eee66305ae 18 void eventFunc(void)
mfurukawa 0:33eee66305ae 19 {//
mfurukawa 0:33eee66305ae 20 // timer.reset();
mfurukawa 0:33eee66305ae 21 // timer.start();
mfurukawa 0:33eee66305ae 22
mfurukawa 0:33eee66305ae 23 // limitation on sending bytes at 921600bps - 92bits(under 100us/sample)
mfurukawa 0:33eee66305ae 24 // requirement : 1kHz sampling
mfurukawa 0:33eee66305ae 25 // = 921.5 bits/sample
mfurukawa 0:33eee66305ae 26 // = 115.1 bytes/sample
mfurukawa 0:33eee66305ae 27 // = 12.7 bytes/axis(9dof, including delimeter) each data uses float type value, equals to 4 bytes as binary description
mfurukawa 0:33eee66305ae 28
mfurukawa 0:33eee66305ae 29 //fwrite(u8buf, sizeof(uint8_t), 6, stdout);
mfurukawa 1:4c8086e3045d 30
mfurukawa 1:4c8086e3045d 31 u16val[2]++;
mfurukawa 1:4c8086e3045d 32
mfurukawa 1:4c8086e3045d 33 for ( int i = 0; i < 3; i++ ){
mfurukawa 1:4c8086e3045d 34 dummy_code[i*2 ] = 0xFF & ( u16val[i] >> 8 ); // High Byte
mfurukawa 1:4c8086e3045d 35 dummy_code[i*2+1] = 0xFF & ( u16val[i] ); // Low Byte
mfurukawa 1:4c8086e3045d 36 }
mfurukawa 0:33eee66305ae 37 for(int i=0;i<6;i++)
mfurukawa 0:33eee66305ae 38 putc(dummy_code[i], stdout);
mfurukawa 0:33eee66305ae 39
mfurukawa 0:33eee66305ae 40 // terminator for ascii sending only //
mfurukawa 0:33eee66305ae 41 printf("\r\n");
mfurukawa 0:33eee66305ae 42 }
mfurukawa 0:33eee66305ae 43
mfurukawa 0:33eee66305ae 44 int main()
mfurukawa 0:33eee66305ae 45 {
mfurukawa 0:33eee66305ae 46 pc.baud(921600); //921600 / 115200
mfurukawa 0:33eee66305ae 47 char c;
mfurukawa 0:33eee66305ae 48
mfurukawa 1:4c8086e3045d 49
mfurukawa 1:4c8086e3045d 50 u16val[0] = 12345; // 0x3039
mfurukawa 1:4c8086e3045d 51 u16val[1] = 54321; // 0xD431
mfurukawa 1:4c8086e3045d 52 u16val[2] = 0; // 0x3279
mfurukawa 1:4c8086e3045d 53
mfurukawa 0:33eee66305ae 54 while(1) {
mfurukawa 0:33eee66305ae 55 if(pc.readable()){
mfurukawa 0:33eee66305ae 56 c = pc.getc();
mfurukawa 0:33eee66305ae 57
mfurukawa 0:33eee66305ae 58 if(c == 's') {
mfurukawa 0:33eee66305ae 59 // define callback event
mfurukawa 0:33eee66305ae 60 ticker.attach_us(eventFunc, 1000000.0f/SampleFreq);
mfurukawa 0:33eee66305ae 61 }
mfurukawa 0:33eee66305ae 62 else if(c == 'r') {
mfurukawa 0:33eee66305ae 63 ticker.detach();
mfurukawa 1:4c8086e3045d 64 printf("------\r\n");
mfurukawa 0:33eee66305ae 65 }
mfurukawa 0:33eee66305ae 66 }
mfurukawa 0:33eee66305ae 67 }
mfurukawa 0:33eee66305ae 68
mfurukawa 0:33eee66305ae 69
mfurukawa 0:33eee66305ae 70 }