7 #include <util/atomic.h>
14 #define UART0_BAUD 19200lu
15 #define UART1_BAUD 9600lu
16 #define UART2_BAUD 9600lu
17 #define UART3_BAUD 9600lu
21 #define ROLLOVER( x, max ) x = ++x >= max ? 0 : x //count up and wrap around
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!
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!
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!
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!
86 uint8_t
read(
tUART port,
void * puffer, uint8_t nbytes, uint8_t timeout );
87 void write(
tUART port,
void * puffer, uint8_t nbytes );
void write(tUART port, void *puffer, uint8_t nbytes)
uint8_t read(tUART port, void *puffer, uint8_t nbytes, uint8_t timeout)