Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of FRDM_serial_pc_board_pass_through by
main.cpp@1:4d30bb984196, 2014-05-01 (annotated)
- Committer:
- subtask
- Date:
- Thu May 01 02:07:51 2014 +0000
- Revision:
- 1:4d30bb984196
- Parent:
- 0:bab6dd4a9c11
test code
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| felipeM | 0:bab6dd4a9c11 | 1 | #include "mbed.h" |
| subtask | 1:4d30bb984196 | 2 | #include "rtos.h" |
| felipeM | 0:bab6dd4a9c11 | 3 | |
| felipeM | 0:bab6dd4a9c11 | 4 | Serial pc(USBTX, USBRX); |
| felipeM | 0:bab6dd4a9c11 | 5 | //TX RX pins, see https://mbed.org/handbook/mbed-FRDM-KL25Z |
| subtask | 1:4d30bb984196 | 6 | Serial uart(p9, p10); |
| felipeM | 0:bab6dd4a9c11 | 7 | //to test is you can use a hard bridge (piece of cable) between PTC4 and PTC3 open a terminal and write something :) |
| felipeM | 0:bab6dd4a9c11 | 8 | //you can integrate this to improve some interesting aplicattions like this: |
| felipeM | 0:bab6dd4a9c11 | 9 | //http://www.instructables.com/id/Temperature-sensor--weatherstation/http://www.instructables.com/id/Temperature-sensor--weatherstation/ |
| felipeM | 0:bab6dd4a9c11 | 10 | DigitalOut pc_activity(LED1); |
| felipeM | 0:bab6dd4a9c11 | 11 | DigitalOut uart_activity(LED2); |
| subtask | 1:4d30bb984196 | 12 | DigitalIn receive(p10); |
| subtask | 1:4d30bb984196 | 13 | |
| subtask | 1:4d30bb984196 | 14 | Timer t; |
| subtask | 1:4d30bb984196 | 15 | int state = 0; |
| subtask | 1:4d30bb984196 | 16 | int period = 0; |
| subtask | 1:4d30bb984196 | 17 | int baud_rate = 0; |
| felipeM | 0:bab6dd4a9c11 | 18 | |
| subtask | 1:4d30bb984196 | 19 | void baud_thread(void const *args) { |
| subtask | 1:4d30bb984196 | 20 | while (true) { |
| subtask | 1:4d30bb984196 | 21 | uart.putc(0x55); |
| subtask | 1:4d30bb984196 | 22 | Thread::wait(1000); |
| subtask | 1:4d30bb984196 | 23 | if (period) |
| subtask | 1:4d30bb984196 | 24 | pc.printf("baud rate %d ", baud_rate); |
| subtask | 1:4d30bb984196 | 25 | } |
| subtask | 1:4d30bb984196 | 26 | } |
| subtask | 1:4d30bb984196 | 27 | |
| subtask | 1:4d30bb984196 | 28 | void get_rate(int *baud_rate) { |
| subtask | 1:4d30bb984196 | 29 | if (*baud_rate > 90000 && *baud_rate < (int)(125200)) |
| subtask | 1:4d30bb984196 | 30 | *baud_rate = 115200; |
| subtask | 1:4d30bb984196 | 31 | else if (*baud_rate > (int)0.9*9600 && *baud_rate < (int)1.1*9600) |
| subtask | 1:4d30bb984196 | 32 | *baud_rate = 9600; |
| subtask | 1:4d30bb984196 | 33 | else |
| subtask | 1:4d30bb984196 | 34 | *baud_rate = 0; |
| subtask | 1:4d30bb984196 | 35 | } |
| subtask | 1:4d30bb984196 | 36 | |
| subtask | 1:4d30bb984196 | 37 | |
| felipeM | 0:bab6dd4a9c11 | 38 | int main() { |
| subtask | 1:4d30bb984196 | 39 | |
| subtask | 1:4d30bb984196 | 40 | int stop = 0; |
| subtask | 1:4d30bb984196 | 41 | int counter = 0; |
| subtask | 1:4d30bb984196 | 42 | uart.baud(115200); |
| subtask | 1:4d30bb984196 | 43 | Thread thread(baud_thread); |
| subtask | 1:4d30bb984196 | 44 | |
| subtask | 1:4d30bb984196 | 45 | pc.printf("started \n"); |
| felipeM | 0:bab6dd4a9c11 | 46 | while(1) { |
| subtask | 1:4d30bb984196 | 47 | if (state == 0) |
| subtask | 1:4d30bb984196 | 48 | if(receive) { |
| subtask | 1:4d30bb984196 | 49 | state = 1; |
| subtask | 1:4d30bb984196 | 50 | } |
| subtask | 1:4d30bb984196 | 51 | |
| subtask | 1:4d30bb984196 | 52 | if (state == 1) |
| subtask | 1:4d30bb984196 | 53 | if(!receive) { |
| subtask | 1:4d30bb984196 | 54 | t.start(); |
| subtask | 1:4d30bb984196 | 55 | state = 2; |
| subtask | 1:4d30bb984196 | 56 | } |
| subtask | 1:4d30bb984196 | 57 | |
| subtask | 1:4d30bb984196 | 58 | if (state == 2) |
| subtask | 1:4d30bb984196 | 59 | if(receive) { |
| subtask | 1:4d30bb984196 | 60 | t.stop(); |
| subtask | 1:4d30bb984196 | 61 | period = t.read_us(); |
| subtask | 1:4d30bb984196 | 62 | baud_rate = (int)(1.0/((float)t.read_us()/1000000.0)); |
| subtask | 1:4d30bb984196 | 63 | get_rate(&baud_rate); |
| subtask | 1:4d30bb984196 | 64 | uart.putc(0xAA); |
| subtask | 1:4d30bb984196 | 65 | t.reset(); |
| subtask | 1:4d30bb984196 | 66 | state = 0; |
| subtask | 1:4d30bb984196 | 67 | } |
| subtask | 1:4d30bb984196 | 68 | |
| felipeM | 0:bab6dd4a9c11 | 69 | if(pc.readable()) { |
| felipeM | 0:bab6dd4a9c11 | 70 | uart.putc(pc.getc()); |
| felipeM | 0:bab6dd4a9c11 | 71 | pc_activity = !pc_activity; |
| felipeM | 0:bab6dd4a9c11 | 72 | } |
| subtask | 1:4d30bb984196 | 73 | |
| felipeM | 0:bab6dd4a9c11 | 74 | if(uart.readable()) { |
| felipeM | 0:bab6dd4a9c11 | 75 | pc.putc(uart.getc()); |
| felipeM | 0:bab6dd4a9c11 | 76 | uart_activity = !uart_activity; |
| felipeM | 0:bab6dd4a9c11 | 77 | } |
| felipeM | 0:bab6dd4a9c11 | 78 | } |
| felipeM | 0:bab6dd4a9c11 | 79 | } |
