eRTK
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros
uart.h
Go to the documentation of this file.
1 /*
2  * uart.h
3  *
4  * Created: 04.05.2015 15:52:50
5  * Author: er
6  */
7 #include <util/atomic.h>
8 #include "eRTK.h"
9 
10 #ifndef UART_H_
11 #define UART_H_
12 
13 //uart port bitraten NUR DANN definieren wenn port gebraucht wird spart flash speicher
14 #define UART0_BAUD 19200lu
15 #define UART1_BAUD 9600lu
16 #define UART2_BAUD 9600lu
17 #define UART3_BAUD 9600lu
18 
19 
20 // Berechnungen z.T. zitiert aus www.microcontroller.net Forum
21 #define ROLLOVER( x, max ) x = ++x >= max ? 0 : x //count up and wrap around
22 
23 #ifdef UART0_BAUD
24 #define RX0_SIZE 16
25 #define TX0_SIZE 16
26 #define UBRR0_VAL ((F_CPU+UART0_BAUD*8)/(UART0_BAUD*16)-1) //clever runden
27 #define BAUD0_REAL (F_CPU/(16*(UBRR0_VAL+1))) //Reale Baudrate
28 #define BAUD0_ERROR ((BAUD0_REAL*1000)/UART0_BAUD) //Fehler in Promille, 1000 = kein Fehler.
29 #if ((BAUD0_ERROR<990) || (BAUD0_ERROR>1010))
30  #error Systematischer Fehler der Baudrate0 groesser 1% und damit zu hoch!
31 #endif
32 
33 #endif
34 
35 #ifdef UART1_BAUD
36 #define RX1_SIZE 16
37 #define TX1_SIZE 16
38 #define UBRR1_VAL ((F_CPU+UART1_BAUD*8)/(UART1_BAUD*16)-1) //clever runden
39 #define BAUD1_REAL (F_CPU/(16*(UBRR1_VAL+1))) //Reale Baudrate
40 #define BAUD1_ERROR ((BAUD1_REAL*1000)/UART1_BAUD) //Fehler in Promille, 1000 = kein Fehler.
41 #if ((BAUD1_ERROR<990) || (BAUD1_ERROR>1010))
42  #error Systematischer Fehler der Baudrate1 groesser 1% und damit zu hoch!
43 #endif
44 #endif
45 
46 #ifdef UART2_BAUD
47 #define RX2_SIZE 16
48 #define TX2_SIZE 16
49 #define UBRR2_VAL ((F_CPU+UART2_BAUD*8)/(UART2_BAUD*16)-1) //clever runden
50 #define BAUD2_REAL (F_CPU/(16*(UBRR2_VAL+1))) //Reale Baudrate
51 #define BAUD2_ERROR ((BAUD2_REAL*1000)/UART2_BAUD) //Fehler in Promille, 1000 = kein Fehler.
52 #if ((BAUD2_ERROR<990) || (BAUD2_ERROR>1010))
53  #error Systematischer Fehler der Baudrate2 groesser 1% und damit zu hoch!
54 #endif
55 #endif
56 
57 #ifdef UART3_BAUD
58 #define RX3_SIZE 16
59 #define TX3_SIZE 16
60 #define UBRR3_VAL ((F_CPU+UART3_BAUD*8)/(UART3_BAUD*16)-1) //clever runden
61 #define BAUD3_REAL (F_CPU/(16*(UBRR3_VAL+1))) //Reale Baudrate
62 #define BAUD3_ERROR ((BAUD3_REAL*1000)/UART3_BAUD) //Fehler in Promille, 1000 = kein Fehler.
63 #if ((BAUD3_ERROR<990) || (BAUD3_ERROR>1010))
64  #error Systematischer Fehler der Baudrate3 groesser 1% und damit zu hoch!
65 #endif
66 #endif
67 
68 typedef enum {
69 #ifdef UART0_BAUD
70  UART0=1,
71 #endif
72 #ifdef UART1_BAUD
73  UART1=2,
74 #endif
75 #ifdef UART2_BAUD
76  UART2=3,
77 #endif
78 #ifdef UART3_BAUD
79  UART3=4,
80 #endif
81  } tUART;
82 
83 tUART open( tUART port );
84 //read liest am port maximal nbytes zeichen in den puffer ein und wartet maximal timeout ms
85 //read gibt die anzahl eingelesener zeicehn im puffer zurueck
86 uint8_t read( tUART port, void * puffer, uint8_t nbytes, uint8_t timeout );
87 void write( tUART port, void * puffer, uint8_t nbytes );
88 
89 #endif /* UART_H_ */
tUART
Definition: uart.h:68
Definition: uart.h:76
void write(tUART port, void *puffer, uint8_t nbytes)
Definition: uart.c:373
uint8_t read(tUART port, void *puffer, uint8_t nbytes, uint8_t timeout)
Definition: uart.c:249
Definition: uart.h:73
Definition: uart.h:79
Definition: uart.h:70
tUART open(tUART port)
Definition: uart.c:51