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.
Dependencies: SoftSerial SDFileSystem mbed wave_player
main.cpp@1:6b839581dc9f, 2017-04-26 (annotated)
- Committer:
- Desertification
- Date:
- Wed Apr 26 07:35:07 2017 +0000
- Revision:
- 1:6b839581dc9f
- Child:
- 3:f128424d2e80
add libs
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| Desertification | 1:6b839581dc9f | 1 | #define TX_MODE 0 //E |
| Desertification | 1:6b839581dc9f | 2 | //#define TX_MODE 1 //F |
| Desertification | 1:6b839581dc9f | 3 | |
| Desertification | 1:6b839581dc9f | 4 | #include "mbed.h" |
| Desertification | 1:6b839581dc9f | 5 | #include "C12832.h" |
| Desertification | 1:6b839581dc9f | 6 | #include "Buffer.h" |
| Desertification | 1:6b839581dc9f | 7 | #include "SoftSerial.h" |
| Desertification | 1:6b839581dc9f | 8 | #include "BufferedSoftSerial.h" |
| Desertification | 1:6b839581dc9f | 9 | |
| Desertification | 1:6b839581dc9f | 10 | C12832 lcd(p5, p7, p6, p8, p11); |
| Desertification | 1:6b839581dc9f | 11 | //BufferedSoftSerial buf(p9, p10); |
| Desertification | 1:6b839581dc9f | 12 | Serial uart(p9, p10); |
| Desertification | 1:6b839581dc9f | 13 | |
| Desertification | 1:6b839581dc9f | 14 | void to_manchester(char* in, int size, char* out){ |
| Desertification | 1:6b839581dc9f | 15 | int m_char_index = 0; |
| Desertification | 1:6b839581dc9f | 16 | for(int char_index = 0; char_index < size; char_index++){ |
| Desertification | 1:6b839581dc9f | 17 | bool bits[16]; // manchester char |
| Desertification | 1:6b839581dc9f | 18 | int m_bit_index = 0; |
| Desertification | 1:6b839581dc9f | 19 | //split in bits and insert inverse |
| Desertification | 1:6b839581dc9f | 20 | for(int j = 0; j < 8; j++){ // iterate over all the bits in the char |
| Desertification | 1:6b839581dc9f | 21 | bool bit = (bool) ((in[char_index] >> 7-j) & 1); |
| Desertification | 1:6b839581dc9f | 22 | bits[m_bit_index] = bit; |
| Desertification | 1:6b839581dc9f | 23 | m_bit_index++; |
| Desertification | 1:6b839581dc9f | 24 | bits[m_bit_index] = !bit; |
| Desertification | 1:6b839581dc9f | 25 | m_bit_index++; |
| Desertification | 1:6b839581dc9f | 26 | } |
| Desertification | 1:6b839581dc9f | 27 | //combine back to 2 chars //todo dry |
| Desertification | 1:6b839581dc9f | 28 | int bit_index = 0; |
| Desertification | 1:6b839581dc9f | 29 | for(int j = 0; j < 8; j++){ //assemble first char |
| Desertification | 1:6b839581dc9f | 30 | out[m_char_index] = out[m_char_index] | (bits[bit_index] << (7-j)); |
| Desertification | 1:6b839581dc9f | 31 | bit_index++; |
| Desertification | 1:6b839581dc9f | 32 | } |
| Desertification | 1:6b839581dc9f | 33 | m_char_index++; |
| Desertification | 1:6b839581dc9f | 34 | for(int j = 0; j < 8; j++){ // assemble second char |
| Desertification | 1:6b839581dc9f | 35 | out[m_char_index] = out[m_char_index] | (bits[bit_index] << (7-j)); |
| Desertification | 1:6b839581dc9f | 36 | bit_index++; |
| Desertification | 1:6b839581dc9f | 37 | } |
| Desertification | 1:6b839581dc9f | 38 | m_char_index++; |
| Desertification | 1:6b839581dc9f | 39 | } |
| Desertification | 1:6b839581dc9f | 40 | } |
| Desertification | 1:6b839581dc9f | 41 | |
| Desertification | 1:6b839581dc9f | 42 | void print_bits(char* buffer, int size){ |
| Desertification | 1:6b839581dc9f | 43 | for(int i = 0; i < size; i++){ |
| Desertification | 1:6b839581dc9f | 44 | for(int j = 0; j < 8; j++){ |
| Desertification | 1:6b839581dc9f | 45 | int bit = ((buffer[i] >> 7-j) & 1); |
| Desertification | 1:6b839581dc9f | 46 | lcd.printf("%i",bit); |
| Desertification | 1:6b839581dc9f | 47 | } |
| Desertification | 1:6b839581dc9f | 48 | lcd.printf(" "); |
| Desertification | 1:6b839581dc9f | 49 | } |
| Desertification | 1:6b839581dc9f | 50 | } |
| Desertification | 1:6b839581dc9f | 51 | |
| Desertification | 1:6b839581dc9f | 52 | int main() { |
| Desertification | 1:6b839581dc9f | 53 | lcd.cls(); |
| Desertification | 1:6b839581dc9f | 54 | lcd.locate(0,0); |
| Desertification | 1:6b839581dc9f | 55 | char s[2]; |
| Desertification | 1:6b839581dc9f | 56 | s[0] = '\0'; |
| Desertification | 1:6b839581dc9f | 57 | s[1] = 15; |
| Desertification | 1:6b839581dc9f | 58 | print_bits(s,2); |
| Desertification | 1:6b839581dc9f | 59 | lcd.printf("\r\n"); |
| Desertification | 1:6b839581dc9f | 60 | char m[4]; |
| Desertification | 1:6b839581dc9f | 61 | to_manchester(s,2,m); |
| Desertification | 1:6b839581dc9f | 62 | print_bits(m,4); |
| Desertification | 1:6b839581dc9f | 63 | /** |
| Desertification | 1:6b839581dc9f | 64 | uart.baud(9600); |
| Desertification | 1:6b839581dc9f | 65 | lcd.cls(); |
| Desertification | 1:6b839581dc9f | 66 | lcd.printf("mbed application board!"); |
| Desertification | 1:6b839581dc9f | 67 | while(true){ |
| Desertification | 1:6b839581dc9f | 68 | if (TX_MODE){ |
| Desertification | 1:6b839581dc9f | 69 | uart.printf("Hello World - buffered \r\n"); |
| Desertification | 1:6b839581dc9f | 70 | wait(0.1f); |
| Desertification | 1:6b839581dc9f | 71 | } else { |
| Desertification | 1:6b839581dc9f | 72 | char r[64]; |
| Desertification | 1:6b839581dc9f | 73 | //buf.gets(r, 64); |
| Desertification | 1:6b839581dc9f | 74 | //lcd.printf("%s",r); |
| Desertification | 1:6b839581dc9f | 75 | lcd.putc(uart.getc()); |
| Desertification | 1:6b839581dc9f | 76 | } |
| Desertification | 1:6b839581dc9f | 77 | }**/ |
| Desertification | 1:6b839581dc9f | 78 | } |
| Desertification | 1:6b839581dc9f | 79 | |
| Desertification | 1:6b839581dc9f | 80 | |
| Desertification | 1:6b839581dc9f | 81 | |
| Desertification | 1:6b839581dc9f | 82 | |
| Desertification | 1:6b839581dc9f | 83 | /** A serial port (UART) for communication with other serial devices |
| Desertification | 1:6b839581dc9f | 84 | * |
| Desertification | 1:6b839581dc9f | 85 | * Can be used for Full Duplex communication, or Simplex by specifying |
| Desertification | 1:6b839581dc9f | 86 | * one pin as NC (Not Connected) |
| Desertification | 1:6b839581dc9f | 87 | * |
| Desertification | 1:6b839581dc9f | 88 | * This uses software serial emulation, regular serial pins are alot better, |
| Desertification | 1:6b839581dc9f | 89 | * however if you don't have spare ones, you can use this. It is advicable |
| Desertification | 1:6b839581dc9f | 90 | * to put the serial connection with highest speed to hardware serial. |
| Desertification | 1:6b839581dc9f | 91 | * |
| Desertification | 1:6b839581dc9f | 92 | * If you lack RAM memory you can also use SoftSerial without this buffer around it. |
| Desertification | 1:6b839581dc9f | 93 | * In that case it is fully blocking. |
| Desertification | 1:6b839581dc9f | 94 | * |
| Desertification | 1:6b839581dc9f | 95 | * Example: |
| Desertification | 1:6b839581dc9f | 96 | * @code |
| Desertification | 1:6b839581dc9f | 97 | * #include "mbed.h" |
| Desertification | 1:6b839581dc9f | 98 | * #include "BufferedSoftSerial.h" |
| Desertification | 1:6b839581dc9f | 99 | * |
| Desertification | 1:6b839581dc9f | 100 | * SoftSerial block(USBTX, USBRX); |
| Desertification | 1:6b839581dc9f | 101 | * BufferedSoftSerial buf(USBTX, USBRX); |
| Desertification | 1:6b839581dc9f | 102 | * |
| Desertification | 1:6b839581dc9f | 103 | * int main() |
| Desertification | 1:6b839581dc9f | 104 | * { |
| Desertification | 1:6b839581dc9f | 105 | * while(1) { |
| Desertification | 1:6b839581dc9f | 106 | * Timer s; |
| Desertification | 1:6b839581dc9f | 107 | * |
| Desertification | 1:6b839581dc9f | 108 | * s.start(); |
| Desertification | 1:6b839581dc9f | 109 | * buf.printf("Hello World - buffered\r\n"); |
| Desertification | 1:6b839581dc9f | 110 | * int buffered_time = s.read_us(); |
| Desertification | 1:6b839581dc9f | 111 | * wait(0.1f); // give time for the buffer to empty |
| Desertification | 1:6b839581dc9f | 112 | * |
| Desertification | 1:6b839581dc9f | 113 | * s.reset(); |
| Desertification | 1:6b839581dc9f | 114 | * block.printf("Hello World - blocking\r\n"); |
| Desertification | 1:6b839581dc9f | 115 | * int polled_time = s.read_us(); |
| Desertification | 1:6b839581dc9f | 116 | * s.stop(); |
| Desertification | 1:6b839581dc9f | 117 | * wait(0.1f); // give time for the buffer to empty |
| Desertification | 1:6b839581dc9f | 118 | * |
| Desertification | 1:6b839581dc9f | 119 | * buf.printf("printf buffered took %d us\r\n", buffered_time); |
| Desertification | 1:6b839581dc9f | 120 | * buf.printf("printf blocking took %d us\r\n", polled_time); |
| Desertification | 1:6b839581dc9f | 121 | * wait(5); |
| Desertification | 1:6b839581dc9f | 122 | * } |
| Desertification | 1:6b839581dc9f | 123 | * } |
| Desertification | 1:6b839581dc9f | 124 | **/ |