uart 1.0
AVR mega series uart library
Loading...
Searching...
No Matches
uart.h
Go to the documentation of this file.
1
19
20#ifndef UART_H_
21#define UART_H_
22
23 #ifndef F_CPU
31 #define F_CPU 12000000UL
32 #endif
33
34 #ifndef UART_BAUDRATE
44 #define UART_BAUDRATE 9600UL
45
46 // Required for setbaud.h
47 #define BAUD UART_BAUDRATE
48 #endif
49
50 #ifndef UART_DATASIZE
65 #define UART_DATASIZE 8
66 #endif
67
68 #ifndef UART_PARITY
81 #define UART_PARITY 0
82 #endif
83
84 #ifndef UART_STOPBITS
96 #define UART_STOPBITS 1
97 #endif
98
99 #ifndef UART_RXC_ECHO
109 // #define UART_RXC_ECHO
110
111 #ifdef _DOXYGEN_ // Used for documentation, can be ignored
112 #define UART_RXC_ECHO
113 #endif
114 #endif
115
116 #ifndef UART_HANDSHAKE
129 #define UART_HANDSHAKE 0
130
131 #if UART_HANDSHAKE == 2
136 #ifndef UART_HANDSHAKE_DDR
137 #define UART_HANDSHAKE_DDR DDRC
138 #endif
139
144 #ifndef UART_HANDSHAKE_PIN
145 #define UART_HANDSHAKE_PIN PINC
146 #endif
147
152 #ifndef UART_HANDSHAKE_PORT
153 #define UART_HANDSHAKE_PORT PORTC
154 #endif
155
163 #ifndef UART_HANDSHAKE_CTS_PIN
164 #define UART_HANDSHAKE_CTS_PIN PINC0
165 #endif
166
174 #ifndef UART_HANDSHAKE_RTS_PIN
175 #define UART_HANDSHAKE_RTS_PIN PINC1
176 #endif
177
178 #endif
179
180 #ifndef UART_HANDSHAKE_XON
185 #define UART_HANDSHAKE_XON 0x11
186 #endif
187
188 #ifndef UART_HANDSHAKE_XOFF
193 #define UART_HANDSHAKE_XOFF 0x13
194 #endif
195 #endif
196
197 #ifndef UART_STDMODE
211 #define UART_STDMODE 1
212 #endif
213
222 /* @{ */
223 #ifndef UART_RXCIE
235 // #define UART_RXCIE
236 #endif
237
238 #ifndef UART_TXCIE
250 // #define UART_TXCIE
251 #endif
252
253 #ifndef UART_UDRIE
265 #ifndef UART_TXCIE
266 // #define UART_UDRIE
267 #else
268 #error "UART_TXCIE and UART_UDRIE cannot be used together"
269 #endif
270 #endif
271 /* @} */
272
273 #include <stdio.h>
274 #include <avr/io.h>
275 #include <util/setbaud.h>
276
278
279 void uart_init(void);
280 void uart_disable(void);
281
282 #if !defined(UART_TXCIE) && !defined(UART_UDRIE)
283 char uart_putchar(char data);
284
285 #if UART_STDMODE == 1 || UART_STDMODE == 2
286 int uart_printf(char data, FILE *stream);
287 #endif
288 #endif
289
290 #if !defined(UART_RXCIE)
291 char uart_getchar(UART_Data *status);
292 UART_Data uart_scanchar(char *data);
294
295 #if UART_STDMODE == 1 || UART_STDMODE == 3
296 int uart_scanf(FILE *stream);
297 void uart_clear(void);
298 #endif
299 #endif
300
301 #if !defined(UART_TXCIE) && !defined(UART_UDRIE) && !defined(UART_RXCIE)
302 #if UART_HANDSHAKE > 0
303 UART_Handshake uart_handshake(UART_Handshake status);
304 #endif
305 #endif
306
307#endif /* UART_H_ */
Enumerations for UART data status, error codes, and handshake states.
enum UART_Error_t UART_Error
Alias for enum UART_Error_t representing UART error status.
Definition UART_enums.h:51
enum UART_Data_t UART_Data
Alias for enum UART_Data_t representing UART receive status.
Definition UART_enums.h:28
enum UART_Handshake_t UART_Handshake
Alias for enum UART_Handshake_t representing flow control status.
Definition UART_enums.h:73
void uart_init(void)
Initialize the UART hardware interface with configured parameters.
Definition uart.c:57
void uart_clear(void)
Clear UART input stream errors and discard pending character.
Definition uart.c:280
char uart_putchar(char data)
Transmit a single character via UART (blocking).
Definition uart.c:155
UART_Data uart_scanchar(char *data)
Non-blocking check for received UART data with error handling.
Definition uart.c:197
int uart_scanf(FILE *stream)
UART scanf stream handler for stdin redirection.
Definition uart.c:269
int uart_printf(char data, FILE *stream)
UART printf stream handler for stdout redirection.
Definition uart.c:177
char uart_getchar(UART_Data *status)
Blocking receive single character via UART.
Definition uart.c:244
void uart_disable(void)
Disable the UART hardware interface and reset configuration.
Definition uart.c:123
UART_Error uart_error_flags(void)
Check and clear UART receive error flags.
Definition uart.c:294