Code to load a LPC1114 over tx/rx. I have only tested with a 1114 chip but it should work with other LPC uControllers
Dependencies: DirectoryList MODSERIAL mbed
Fork of ika_shouyu_poppoyaki by
serial_utilities.cpp@39:f68f9fa1e88e, 2013-09-29 (annotated)
- Committer:
- okano
- Date:
- Sun Sep 29 03:54:06 2013 +0000
- Revision:
- 39:f68f9fa1e88e
- Parent:
- 30:e0d7524661ca
- Child:
- 48:99cfe3a929ea
ver 0.98 : suppressed debug message in default setting. it improves speed of writing and verifying
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
okano | 21:e149d0bdbf4a | 1 | #include "mbed.h" |
okano | 22:bd98a782fba6 | 2 | #include "serial_utilities.h" |
okano | 30:e0d7524661ca | 3 | #include "isp.h" |
okano | 21:e149d0bdbf4a | 4 | |
okano | 21:e149d0bdbf4a | 5 | Serial pc ( USBTX,USBRX ); |
okano | 21:e149d0bdbf4a | 6 | |
okano | 21:e149d0bdbf4a | 7 | #if 0 |
okano | 21:e149d0bdbf4a | 8 | Serial target( p28, p27 ); |
okano | 21:e149d0bdbf4a | 9 | #else |
okano | 21:e149d0bdbf4a | 10 | #define MODSERIAL_DEFAULT_RX_BUFFER_SIZE 512 |
okano | 21:e149d0bdbf4a | 11 | #define MODSERIAL_DEFAULT_TX_BUFFER_SIZE 512 |
okano | 21:e149d0bdbf4a | 12 | #include "MODSERIAL.h" |
okano | 21:e149d0bdbf4a | 13 | MODSERIAL target( p28, p27 ); // |
okano | 21:e149d0bdbf4a | 14 | #endif |
okano | 21:e149d0bdbf4a | 15 | |
okano | 26:a63e73885b21 | 16 | Timeout timeout; |
okano | 26:a63e73885b21 | 17 | |
okano | 26:a63e73885b21 | 18 | int timeout_flag = 0; |
okano | 26:a63e73885b21 | 19 | |
okano | 26:a63e73885b21 | 20 | |
okano | 21:e149d0bdbf4a | 21 | void set_target_baud_rate( int baud_rate ) |
okano | 21:e149d0bdbf4a | 22 | { |
okano | 21:e149d0bdbf4a | 23 | target.baud( baud_rate ); |
okano | 21:e149d0bdbf4a | 24 | } |
okano | 21:e149d0bdbf4a | 25 | |
okano | 21:e149d0bdbf4a | 26 | |
okano | 21:e149d0bdbf4a | 27 | void usb_serial_bridge_operation( void ) |
okano | 21:e149d0bdbf4a | 28 | { |
okano | 21:e149d0bdbf4a | 29 | while (1) { |
okano | 21:e149d0bdbf4a | 30 | |
okano | 21:e149d0bdbf4a | 31 | if ( pc.readable() ) { |
okano | 21:e149d0bdbf4a | 32 | target.putc( pc.getc() ); |
okano | 21:e149d0bdbf4a | 33 | } |
okano | 21:e149d0bdbf4a | 34 | |
okano | 21:e149d0bdbf4a | 35 | if ( target.readable() ) { |
okano | 21:e149d0bdbf4a | 36 | pc.putc( target.getc() ); |
okano | 21:e149d0bdbf4a | 37 | } |
okano | 21:e149d0bdbf4a | 38 | } |
okano | 21:e149d0bdbf4a | 39 | } |
okano | 21:e149d0bdbf4a | 40 | |
okano | 21:e149d0bdbf4a | 41 | |
okano | 21:e149d0bdbf4a | 42 | void put_string( char *s ) |
okano | 21:e149d0bdbf4a | 43 | { |
okano | 21:e149d0bdbf4a | 44 | char c; |
okano | 21:e149d0bdbf4a | 45 | |
okano | 21:e149d0bdbf4a | 46 | while ( c = *s++ ) { |
okano | 21:e149d0bdbf4a | 47 | target.putc( c ); |
okano | 28:689c3880e0e4 | 48 | toggle_led( 0 ); |
okano | 21:e149d0bdbf4a | 49 | } |
okano | 21:e149d0bdbf4a | 50 | } |
okano | 21:e149d0bdbf4a | 51 | |
okano | 21:e149d0bdbf4a | 52 | |
okano | 21:e149d0bdbf4a | 53 | void put_binary( char *b, int size ) |
okano | 21:e149d0bdbf4a | 54 | { |
okano | 28:689c3880e0e4 | 55 | for ( int i = 0; i < size; i++ ) { |
okano | 21:e149d0bdbf4a | 56 | target.putc( *b++ ); |
okano | 28:689c3880e0e4 | 57 | toggle_led( 0 ); |
okano | 28:689c3880e0e4 | 58 | } |
okano | 21:e149d0bdbf4a | 59 | } |
okano | 21:e149d0bdbf4a | 60 | |
okano | 21:e149d0bdbf4a | 61 | void set_flag() |
okano | 21:e149d0bdbf4a | 62 | { |
okano | 21:e149d0bdbf4a | 63 | timeout_flag = 1; |
okano | 21:e149d0bdbf4a | 64 | } |
okano | 21:e149d0bdbf4a | 65 | |
okano | 21:e149d0bdbf4a | 66 | |
okano | 21:e149d0bdbf4a | 67 | void get_string( char *s ) |
okano | 21:e149d0bdbf4a | 68 | { |
okano | 21:e149d0bdbf4a | 69 | int i = 0; |
okano | 21:e149d0bdbf4a | 70 | char c = 0; |
okano | 21:e149d0bdbf4a | 71 | timeout_flag = 0; |
okano | 21:e149d0bdbf4a | 72 | |
okano | 21:e149d0bdbf4a | 73 | timeout.attach( &set_flag, 1 ); |
okano | 21:e149d0bdbf4a | 74 | |
okano | 21:e149d0bdbf4a | 75 | do { |
okano | 21:e149d0bdbf4a | 76 | do { |
okano | 21:e149d0bdbf4a | 77 | if ( target.readable() ) { |
okano | 21:e149d0bdbf4a | 78 | c = target.getc(); |
okano | 21:e149d0bdbf4a | 79 | |
okano | 21:e149d0bdbf4a | 80 | if ( ( c == '\n') || (c == '\r') ) |
okano | 21:e149d0bdbf4a | 81 | break; |
okano | 21:e149d0bdbf4a | 82 | |
okano | 21:e149d0bdbf4a | 83 | *s++ = c; |
okano | 21:e149d0bdbf4a | 84 | i++; |
okano | 28:689c3880e0e4 | 85 | toggle_led( 1 ); |
okano | 21:e149d0bdbf4a | 86 | } |
okano | 21:e149d0bdbf4a | 87 | |
okano | 21:e149d0bdbf4a | 88 | if ( timeout_flag ) |
okano | 21:e149d0bdbf4a | 89 | return; |
okano | 21:e149d0bdbf4a | 90 | } while ( 1 ); |
okano | 21:e149d0bdbf4a | 91 | } while ( !i ); |
okano | 21:e149d0bdbf4a | 92 | |
okano | 21:e149d0bdbf4a | 93 | *s = '\0'; |
okano | 21:e149d0bdbf4a | 94 | } |
okano | 21:e149d0bdbf4a | 95 | |
okano | 21:e149d0bdbf4a | 96 | |
okano | 21:e149d0bdbf4a | 97 | int get_binary( char *b, int length ) |
okano | 21:e149d0bdbf4a | 98 | { |
okano | 21:e149d0bdbf4a | 99 | int i; |
okano | 21:e149d0bdbf4a | 100 | |
okano | 21:e149d0bdbf4a | 101 | timeout_flag = 0; |
okano | 21:e149d0bdbf4a | 102 | timeout.attach( &set_flag, 1 ); |
okano | 21:e149d0bdbf4a | 103 | |
okano | 39:f68f9fa1e88e | 104 | for ( i = 0; i < length; ) { |
okano | 28:689c3880e0e4 | 105 | if ( target.readable() ) { |
okano | 21:e149d0bdbf4a | 106 | *b++ = target.getc(); |
okano | 39:f68f9fa1e88e | 107 | i++; |
okano | 28:689c3880e0e4 | 108 | toggle_led( 1 ); |
okano | 28:689c3880e0e4 | 109 | } |
okano | 29:96e28bc1bd99 | 110 | |
okano | 21:e149d0bdbf4a | 111 | if ( timeout_flag ) |
okano | 21:e149d0bdbf4a | 112 | return ( i ); |
okano | 21:e149d0bdbf4a | 113 | } |
okano | 21:e149d0bdbf4a | 114 | |
okano | 21:e149d0bdbf4a | 115 | return ( i ); |
okano | 21:e149d0bdbf4a | 116 | } |
okano | 21:e149d0bdbf4a | 117 | |
okano | 21:e149d0bdbf4a | 118 | |
okano | 21:e149d0bdbf4a | 119 | char read_byte( void ) |
okano | 21:e149d0bdbf4a | 120 | { |
okano | 21:e149d0bdbf4a | 121 | while ( !target.readable() ) |
okano | 21:e149d0bdbf4a | 122 | ; |
okano | 21:e149d0bdbf4a | 123 | |
okano | 21:e149d0bdbf4a | 124 | return ( target.getc() ); |
okano | 21:e149d0bdbf4a | 125 | } |
okano | 21:e149d0bdbf4a | 126 | |
okano | 21:e149d0bdbf4a | 127 |