#include #include #include #define F_CPU 16000000UL #define BAUD 38400UL //Berechnung des Wertes für das Baudratenregister UBRR #define UBRR_VAL ((F_CPU + BAUD*8)/(BAUD*16)-1) //clever runden #define BAUD_REAL (F_CPU/(16*(UBRR_VAL+1))) //reale Baudrate #define BAUD_ERROR ((BAUD_REAL*1000)/BAUD) //Fehler in Promille, 1000 = kein Fehler #if ((BAUD_ERROR < 990) || (BAUD_ERROR > 1010)) #error Systematischer Fehler der Baudrate grösser als 1%! #endif #include volatile uint8_t uart_str_complete = 0; //1 ... String komplett empfangen volatile uint8_t uart_str_count = 0; volatile unsigned char uart_eingabe[]= ""; void usart_ini() { //Baud-Rate einstellen UBRRH = (unsigned char)(UBRR_VAL>>8); UBRRL = (unsigned char)UBRR_VAL; //RX Interrupt, Empfänger und Sender einschalten UCSRB = (1<