source: trunk/software/firmware/my_serial.h

Last change on this file was 11, checked in by bouyer, 7 years ago

Firmware for V2 boards

File size: 1.8 KB
Line 
1
2char getchar(void);
3
4/* #define UART_BUFSIZE 16 */
5/* #define UART_BUFSIZE_MASK 0x0f */
6#define UART_BUFSIZE 128
7#define UART_BUFSIZE_MASK 0x7f
8
9extern char uart_txbuf[UART_BUFSIZE];
10extern unsigned char uart_txbuf_prod;
11extern volatile unsigned char uart_txbuf_cons;
12
13extern char uart_rxbuf[UART_BUFSIZE];
14extern volatile unsigned char uart_rxbuf_prod;
15extern unsigned char uart_rxbuf_cons;
16
17char uart_getchar(void);
18void uart_putchar_raw(char);
19#if 0
20#define UART_PUTCHAR_HARD(c) { \
21 while (PIR1bits.TX1IF == 0) \
22 ; \
23 TXREG1 = c; \
24}
25#endif
26void uart_putchar_hard(char) __wparam;
27
28#define UART_FLUSH() { \
29 while (PIE1bits.TX1IE) \
30 ; \
31}
32
33
34#define USART_INIT { \
35 uart_txbuf_prod = uart_txbuf_cons = 0; \
36 uart_rxbuf_prod = uart_rxbuf_cons = 0; \
37 (void)RCREG1; \
38 PIE1bits.RC1IE = 1; \
39 }
40
41#define USART_INTR {\
42 if (PIE1bits.TX1IE && PIR1bits.TX1IF) { \
43 if (uart_txbuf_prod == uart_txbuf_cons) { \
44 PIE1bits.TX1IE = 0; /* buffer empty */ \
45 } else { \
46 /* Place char in TXREG - this starts transmition */ \
47 TXREG1 = uart_txbuf[uart_txbuf_cons]; \
48 uart_txbuf_cons = (uart_txbuf_cons + 1) & UART_BUFSIZE_MASK;\
49 } \
50 } \
51 if (PIE1bits.RC1IE && PIR1bits.RC1IF) { \
52 register char c = RCREG1; \
53 if (RCSTA1bits.OERR) { \
54 RCSTA1bits.CREN = 0; \
55 RCSTA1bits.CREN = 1; \
56 } \
57 if (status & STAT_CONSOLE) { \
58 uart_rxbuf_prod = (uart_rxbuf_prod + 1) & UART_BUFSIZE_MASK;\
59 uart_rxbuf[uart_rxbuf_prod] = c; \
60 } else { \
61 if (c == '\r') c = '\n';\
62 if (c != '\n' || uart_rxbuf[uart_rxbuf_prod] != '\n') { \
63 uart_rxbuf_prod = (uart_rxbuf_prod + 1) & UART_BUFSIZE_MASK;\
64 uart_rxbuf[uart_rxbuf_prod] = c; \
65 if (c == '\n') { \
66 if (softintrs & INT_RX1) \
67 softintrs |= INT_RX1OF; \
68 softintrs |= INT_RX1; \
69 } \
70 } \
71 } \
72 }\
73 }
Note: See TracBrowser for help on using the repository browser.