Estan Lujan
/
baud_test
test code
Fork of FRDM_serial_pc_board_pass_through by
Revision 1:4d30bb984196, committed 2014-05-01
- Comitter:
- subtask
- Date:
- Thu May 01 02:07:51 2014 +0000
- Parent:
- 0:bab6dd4a9c11
- Commit message:
- test code
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
mbed-rtos.lib | Show annotated file Show diff for this revision Revisions of this file |
diff -r bab6dd4a9c11 -r 4d30bb984196 main.cpp --- a/main.cpp Sat Oct 05 19:46:21 2013 +0000 +++ b/main.cpp Thu May 01 02:07:51 2014 +0000 @@ -1,20 +1,76 @@ #include "mbed.h" +#include "rtos.h" Serial pc(USBTX, USBRX); //TX RX pins, see https://mbed.org/handbook/mbed-FRDM-KL25Z -Serial uart(PTC4, PTC3); +Serial uart(p9, p10); //to test is you can use a hard bridge (piece of cable) between PTC4 and PTC3 open a terminal and write something :) //you can integrate this to improve some interesting aplicattions like this: //http://www.instructables.com/id/Temperature-sensor--weatherstation/http://www.instructables.com/id/Temperature-sensor--weatherstation/ DigitalOut pc_activity(LED1); DigitalOut uart_activity(LED2); +DigitalIn receive(p10); + +Timer t; +int state = 0; +int period = 0; +int baud_rate = 0; +void baud_thread(void const *args) { + while (true) { + uart.putc(0x55); + Thread::wait(1000); + if (period) + pc.printf("baud rate %d ", baud_rate); + } +} + +void get_rate(int *baud_rate) { + if (*baud_rate > 90000 && *baud_rate < (int)(125200)) + *baud_rate = 115200; + else if (*baud_rate > (int)0.9*9600 && *baud_rate < (int)1.1*9600) + *baud_rate = 9600; + else + *baud_rate = 0; +} + + int main() { + + int stop = 0; + int counter = 0; + uart.baud(115200); + Thread thread(baud_thread); + + pc.printf("started \n"); while(1) { + if (state == 0) + if(receive) { + state = 1; + } + + if (state == 1) + if(!receive) { + t.start(); + state = 2; + } + + if (state == 2) + if(receive) { + t.stop(); + period = t.read_us(); + baud_rate = (int)(1.0/((float)t.read_us()/1000000.0)); + get_rate(&baud_rate); + uart.putc(0xAA); + t.reset(); + state = 0; + } + if(pc.readable()) { uart.putc(pc.getc()); pc_activity = !pc_activity; } + if(uart.readable()) { pc.putc(uart.getc()); uart_activity = !uart_activity;
diff -r bab6dd4a9c11 -r 4d30bb984196 mbed-rtos.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed-rtos.lib Thu May 01 02:07:51 2014 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed-rtos/#4ef72665e2c8