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 jro by
JroSerial.cpp@2:3d8d52e9751c, 2015-02-05 (annotated)
- Committer:
- miguelcordero191
- Date:
- Thu Feb 05 19:01:42 2015 +0000
- Revision:
- 2:3d8d52e9751c
serial and ethernet working with threads.; serial baudrate = 1000000; dhcp is working well but static ip is not.
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| miguelcordero191 | 2:3d8d52e9751c | 1 | #include "JroSerial.h" |
| miguelcordero191 | 2:3d8d52e9751c | 2 | |
| miguelcordero191 | 2:3d8d52e9751c | 3 | JroSerial::JroSerial(PinName tx, PinName rx, SerialDriver *screen) : SerialDriver(tx,rx) |
| miguelcordero191 | 2:3d8d52e9751c | 4 | { |
| miguelcordero191 | 2:3d8d52e9751c | 5 | //; |
| miguelcordero191 | 2:3d8d52e9751c | 6 | this->device_irqn = UART3_RX_TX_IRQn; |
| miguelcordero191 | 2:3d8d52e9751c | 7 | this->screen = screen; |
| miguelcordero191 | 2:3d8d52e9751c | 8 | // attach the interrupts |
| miguelcordero191 | 2:3d8d52e9751c | 9 | } |
| miguelcordero191 | 2:3d8d52e9751c | 10 | |
| miguelcordero191 | 2:3d8d52e9751c | 11 | int JroSerial::Init(int baudrate) |
| miguelcordero191 | 2:3d8d52e9751c | 12 | { |
| miguelcordero191 | 2:3d8d52e9751c | 13 | this->baud(baudrate); |
| miguelcordero191 | 2:3d8d52e9751c | 14 | //this->screen->baud(baudrate); |
| miguelcordero191 | 2:3d8d52e9751c | 15 | |
| miguelcordero191 | 2:3d8d52e9751c | 16 | //attach(this, &JroSerial::Rx_interrupt, RxIrq); |
| miguelcordero191 | 2:3d8d52e9751c | 17 | //NVIC_DisableIRQ(this->device_irqn); |
| miguelcordero191 | 2:3d8d52e9751c | 18 | //disableRxInterrupt(); |
| miguelcordero191 | 2:3d8d52e9751c | 19 | |
| miguelcordero191 | 2:3d8d52e9751c | 20 | return 1; |
| miguelcordero191 | 2:3d8d52e9751c | 21 | } |
| miguelcordero191 | 2:3d8d52e9751c | 22 | |
| miguelcordero191 | 2:3d8d52e9751c | 23 | |
| miguelcordero191 | 2:3d8d52e9751c | 24 | // This function is called when a character goes into the RX buffer. |
| miguelcordero191 | 2:3d8d52e9751c | 25 | |
| miguelcordero191 | 2:3d8d52e9751c | 26 | void JroSerial::Rx_interrupt() { |
| miguelcordero191 | 2:3d8d52e9751c | 27 | |
| miguelcordero191 | 2:3d8d52e9751c | 28 | disableRxInterrupt(); |
| miguelcordero191 | 2:3d8d52e9751c | 29 | //NVIC_DisableIRQ(this->device_irqn); |
| miguelcordero191 | 2:3d8d52e9751c | 30 | //uart.attach(NULL, Serial::RxIrq); |
| miguelcordero191 | 2:3d8d52e9751c | 31 | //uint32_t IRR3 = UART3->IIR; |
| miguelcordero191 | 2:3d8d52e9751c | 32 | //UART_3_RBR = K64F_UART3->RBR; |
| miguelcordero191 | 2:3d8d52e9751c | 33 | |
| miguelcordero191 | 2:3d8d52e9751c | 34 | //ser_thread_ptr->signal_set(0x01); |
| miguelcordero191 | 2:3d8d52e9751c | 35 | //this->rx_sem.release(); |
| miguelcordero191 | 2:3d8d52e9751c | 36 | return; |
| miguelcordero191 | 2:3d8d52e9751c | 37 | } |
| miguelcordero191 | 2:3d8d52e9751c | 38 | int JroSerial::ReadData(char* rx_buffer) |
| miguelcordero191 | 2:3d8d52e9751c | 39 | { |
| miguelcordero191 | 2:3d8d52e9751c | 40 | int tmp; |
| miguelcordero191 | 2:3d8d52e9751c | 41 | unsigned short i=0; |
| miguelcordero191 | 2:3d8d52e9751c | 42 | unsigned short time_counter=0; |
| miguelcordero191 | 2:3d8d52e9751c | 43 | |
| miguelcordero191 | 2:3d8d52e9751c | 44 | //NVIC_EnableIRQ(this->device_irqn); |
| miguelcordero191 | 2:3d8d52e9751c | 45 | //enableRxInterrupt(); |
| miguelcordero191 | 2:3d8d52e9751c | 46 | this->screen->putc(0x34); |
| miguelcordero191 | 2:3d8d52e9751c | 47 | this->screen->putc(0x31); |
| miguelcordero191 | 2:3d8d52e9751c | 48 | //this->rx_sem.wait(); |
| miguelcordero191 | 2:3d8d52e9751c | 49 | this->screen->putc(0x34); |
| miguelcordero191 | 2:3d8d52e9751c | 50 | this->screen->putc(0x32); |
| miguelcordero191 | 2:3d8d52e9751c | 51 | while(true){ |
| miguelcordero191 | 2:3d8d52e9751c | 52 | /* |
| miguelcordero191 | 2:3d8d52e9751c | 53 | if(this->readable()==0){ |
| miguelcordero191 | 2:3d8d52e9751c | 54 | time_counter++; |
| miguelcordero191 | 2:3d8d52e9751c | 55 | if (time_counter > 3) |
| miguelcordero191 | 2:3d8d52e9751c | 56 | break; |
| miguelcordero191 | 2:3d8d52e9751c | 57 | Thread::wait(300); |
| miguelcordero191 | 2:3d8d52e9751c | 58 | continue; |
| miguelcordero191 | 2:3d8d52e9751c | 59 | } |
| miguelcordero191 | 2:3d8d52e9751c | 60 | */ |
| miguelcordero191 | 2:3d8d52e9751c | 61 | |
| miguelcordero191 | 2:3d8d52e9751c | 62 | tmp = this->getc(200); |
| miguelcordero191 | 2:3d8d52e9751c | 63 | if (tmp == -1) |
| miguelcordero191 | 2:3d8d52e9751c | 64 | break; |
| miguelcordero191 | 2:3d8d52e9751c | 65 | |
| miguelcordero191 | 2:3d8d52e9751c | 66 | rx_buffer[i] = (unsigned char) tmp; |
| miguelcordero191 | 2:3d8d52e9751c | 67 | |
| miguelcordero191 | 2:3d8d52e9751c | 68 | //Don't delete the next line screen.putc(); |
| miguelcordero191 | 2:3d8d52e9751c | 69 | this->screen->putc(0x34); |
| miguelcordero191 | 2:3d8d52e9751c | 70 | this->screen->putc(0x33); |
| miguelcordero191 | 2:3d8d52e9751c | 71 | this->screen->putc(rx_buffer[i]); |
| miguelcordero191 | 2:3d8d52e9751c | 72 | |
| miguelcordero191 | 2:3d8d52e9751c | 73 | i++; |
| miguelcordero191 | 2:3d8d52e9751c | 74 | time_counter = 0; |
| miguelcordero191 | 2:3d8d52e9751c | 75 | } |
| miguelcordero191 | 2:3d8d52e9751c | 76 | |
| miguelcordero191 | 2:3d8d52e9751c | 77 | this->putc(i); |
| miguelcordero191 | 2:3d8d52e9751c | 78 | |
| miguelcordero191 | 2:3d8d52e9751c | 79 | this->screen->putc(0x34); |
| miguelcordero191 | 2:3d8d52e9751c | 80 | this->screen->putc(0x34); |
| miguelcordero191 | 2:3d8d52e9751c | 81 | |
| miguelcordero191 | 2:3d8d52e9751c | 82 | if (i==0x28){ |
| miguelcordero191 | 2:3d8d52e9751c | 83 | this->putc(0x37); |
| miguelcordero191 | 2:3d8d52e9751c | 84 | this->putc(0x37); |
| miguelcordero191 | 2:3d8d52e9751c | 85 | } |
| miguelcordero191 | 2:3d8d52e9751c | 86 | this->putc(0x10); |
| miguelcordero191 | 2:3d8d52e9751c | 87 | this->putc(0x13); |
| miguelcordero191 | 2:3d8d52e9751c | 88 | |
| miguelcordero191 | 2:3d8d52e9751c | 89 | return i; |
| miguelcordero191 | 2:3d8d52e9751c | 90 | } |
