Versao com problema no socket rx
Dependencies: EthernetInterface NTPClient mbed-rtos mbed
UART3Interrupt.cpp@0:4d17cd9c8f9d, 2014-09-09 (annotated)
- Committer:
- klauss
- Date:
- Tue Sep 09 20:01:24 2014 +0000
- Revision:
- 0:4d17cd9c8f9d
20140726 copy
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
klauss | 0:4d17cd9c8f9d | 1 | #include "mbed.h" |
klauss | 0:4d17cd9c8f9d | 2 | #include <stdint.h> |
klauss | 0:4d17cd9c8f9d | 3 | #include "UART3Interrupt.h" |
klauss | 0:4d17cd9c8f9d | 4 | #include "configs.h" |
klauss | 0:4d17cd9c8f9d | 5 | |
klauss | 0:4d17cd9c8f9d | 6 | char RXBuffer[DATA_SIZE]; // UART3 RX Buffer |
klauss | 0:4d17cd9c8f9d | 7 | //volatile uint8_t IntBuff[900]; // Interrupt Buffer |
klauss | 0:4d17cd9c8f9d | 8 | //static volatile uint8_t *RXHeadPtr; // Buffer Head Pointer |
klauss | 0:4d17cd9c8f9d | 9 | //static volatile uint8_t *RXTailPtr; // Buffer Tail Pointer |
klauss | 0:4d17cd9c8f9d | 10 | //static volatile uint16_t move = 0; |
klauss | 0:4d17cd9c8f9d | 11 | //uint8_t status = 0; |
klauss | 0:4d17cd9c8f9d | 12 | volatile uint16_t RX_c = 0; |
klauss | 0:4d17cd9c8f9d | 13 | |
klauss | 0:4d17cd9c8f9d | 14 | void SerialRecvInterrupt (void) { // UART3 Serial Interrupt Handler |
klauss | 0:4d17cd9c8f9d | 15 | |
klauss | 0:4d17cd9c8f9d | 16 | while ( LPC_UART3->LSR & (0<<1) ) {} |
klauss | 0:4d17cd9c8f9d | 17 | *(RXBuffer+RX_c) = LPC_UART3->RBR; // Receive data from UART3 RX |
klauss | 0:4d17cd9c8f9d | 18 | |
klauss | 0:4d17cd9c8f9d | 19 | if (RXBuffer[RX_c] != RXBuffer[RX_c-1]) { |
klauss | 0:4d17cd9c8f9d | 20 | // led3 =!led3; |
klauss | 0:4d17cd9c8f9d | 21 | } |
klauss | 0:4d17cd9c8f9d | 22 | |
klauss | 0:4d17cd9c8f9d | 23 | RX_c++; |
klauss | 0:4d17cd9c8f9d | 24 | |
klauss | 0:4d17cd9c8f9d | 25 | if ( RX_c == 300 ) |
klauss | 0:4d17cd9c8f9d | 26 | { |
klauss | 0:4d17cd9c8f9d | 27 | status = 1; |
klauss | 0:4d17cd9c8f9d | 28 | } |
klauss | 0:4d17cd9c8f9d | 29 | |
klauss | 0:4d17cd9c8f9d | 30 | } |
klauss | 0:4d17cd9c8f9d | 31 | |
klauss | 0:4d17cd9c8f9d | 32 | void RXFrameSync (void) { |
klauss | 0:4d17cd9c8f9d | 33 | |
klauss | 0:4d17cd9c8f9d | 34 | // led1 = !led1; |
klauss | 0:4d17cd9c8f9d | 35 | // led4 = !led4; |
klauss | 0:4d17cd9c8f9d | 36 | |
klauss | 0:4d17cd9c8f9d | 37 | RX_c = 0; |
klauss | 0:4d17cd9c8f9d | 38 | status = 0; |
klauss | 0:4d17cd9c8f9d | 39 | } |
klauss | 0:4d17cd9c8f9d | 40 | |
klauss | 0:4d17cd9c8f9d | 41 | |
klauss | 0:4d17cd9c8f9d | 42 | |
klauss | 0:4d17cd9c8f9d | 43 | |
klauss | 0:4d17cd9c8f9d | 44 | |
klauss | 0:4d17cd9c8f9d | 45 | |
klauss | 0:4d17cd9c8f9d | 46 | |
klauss | 0:4d17cd9c8f9d | 47 | |
klauss | 0:4d17cd9c8f9d | 48 | |
klauss | 0:4d17cd9c8f9d | 49 | |
klauss | 0:4d17cd9c8f9d | 50 | |
klauss | 0:4d17cd9c8f9d | 51 | |
klauss | 0:4d17cd9c8f9d | 52 | |
klauss | 0:4d17cd9c8f9d | 53 | |
klauss | 0:4d17cd9c8f9d | 54 | /* |
klauss | 0:4d17cd9c8f9d | 55 | void initRX (void) { |
klauss | 0:4d17cd9c8f9d | 56 | |
klauss | 0:4d17cd9c8f9d | 57 | RXHeadPtr = IntBuff; // Initial state |
klauss | 0:4d17cd9c8f9d | 58 | RXHeadPtr = RXTailPtr; |
klauss | 0:4d17cd9c8f9d | 59 | |
klauss | 0:4d17cd9c8f9d | 60 | } |
klauss | 0:4d17cd9c8f9d | 61 | |
klauss | 0:4d17cd9c8f9d | 62 | void SerialRecvInterrupt (void) // UART3 Serial Interrupt Handler |
klauss | 0:4d17cd9c8f9d | 63 | { |
klauss | 0:4d17cd9c8f9d | 64 | static uint8_t data = 0; |
klauss | 0:4d17cd9c8f9d | 65 | while ( LPC_UART3->LSR &= (0<<1) ) {} |
klauss | 0:4d17cd9c8f9d | 66 | // *(RXBuffer+idx) = LPC_UART3->RBR; Receive data from UART3 RX |
klauss | 0:4d17cd9c8f9d | 67 | |
klauss | 0:4d17cd9c8f9d | 68 | data = LPC_UART3->RBR; // Receive data from UART3 RX |
klauss | 0:4d17cd9c8f9d | 69 | |
klauss | 0:4d17cd9c8f9d | 70 | RXHeadPtr = &data; |
klauss | 0:4d17cd9c8f9d | 71 | |
klauss | 0:4d17cd9c8f9d | 72 | RXHeadPtr++; |
klauss | 0:4d17cd9c8f9d | 73 | move++; |
klauss | 0:4d17cd9c8f9d | 74 | |
klauss | 0:4d17cd9c8f9d | 75 | if ( RXHeadPtr == (IntBuff+899) ) |
klauss | 0:4d17cd9c8f9d | 76 | { |
klauss | 0:4d17cd9c8f9d | 77 | RXHeadPtr = IntBuff; |
klauss | 0:4d17cd9c8f9d | 78 | } |
klauss | 0:4d17cd9c8f9d | 79 | |
klauss | 0:4d17cd9c8f9d | 80 | } |
klauss | 0:4d17cd9c8f9d | 81 | |
klauss | 0:4d17cd9c8f9d | 82 | void RcvRX( void ) { |
klauss | 0:4d17cd9c8f9d | 83 | |
klauss | 0:4d17cd9c8f9d | 84 | static uint16_t p = 0; |
klauss | 0:4d17cd9c8f9d | 85 | static uint8_t data = 0; |
klauss | 0:4d17cd9c8f9d | 86 | |
klauss | 0:4d17cd9c8f9d | 87 | if ( move ) { |
klauss | 0:4d17cd9c8f9d | 88 | |
klauss | 0:4d17cd9c8f9d | 89 | data = *RXTailPtr; |
klauss | 0:4d17cd9c8f9d | 90 | |
klauss | 0:4d17cd9c8f9d | 91 | RXBuffer[p] = data; |
klauss | 0:4d17cd9c8f9d | 92 | RXTailPtr++; |
klauss | 0:4d17cd9c8f9d | 93 | move--; |
klauss | 0:4d17cd9c8f9d | 94 | p++; |
klauss | 0:4d17cd9c8f9d | 95 | } |
klauss | 0:4d17cd9c8f9d | 96 | |
klauss | 0:4d17cd9c8f9d | 97 | if ( RXTailPtr == (IntBuff+899) ) { |
klauss | 0:4d17cd9c8f9d | 98 | RXTailPtr = IntBuff; |
klauss | 0:4d17cd9c8f9d | 99 | } |
klauss | 0:4d17cd9c8f9d | 100 | |
klauss | 0:4d17cd9c8f9d | 101 | if ( p == 300 ) { |
klauss | 0:4d17cd9c8f9d | 102 | processRX = 1; |
klauss | 0:4d17cd9c8f9d | 103 | p = 0; |
klauss | 0:4d17cd9c8f9d | 104 | } |
klauss | 0:4d17cd9c8f9d | 105 | |
klauss | 0:4d17cd9c8f9d | 106 | } |
klauss | 0:4d17cd9c8f9d | 107 | */ |