Ok, kannst du mir denn sagen, was dann noch falsch sein soll? Ich denke, die Berechnung der Baudrate ist richtig, und auch sonst sollte alles stimmen, oder?
Code:#ifndef F_CPU #define F_CPU 20000000UL #endif #ifndef UART_BAUD_RATE #define UART_BAUD_RATE 9600UL #endif /***************/ int main(void) { /***************/ USART_init(UART_BAUD_RATE); for(;;) { USART_transmit('A'); _delay_ms(10); _delay_ms(10); USART_transmit('B'); _delay_ms(10); _delay_ms(10); } /***************/ static void USART_init(unsigned int baud) { //nochmal genau ansehen und schöner formulieren! /***************/ UCSRA=0x00; UBRRL = (F_CPU/(16 * baud)) - 1; UBRRH=0x00; UCSRB = (1 << RXEN) | (1 << TXEN); } /***************/ void USART_transmit(unsigned char cData) { //sendet ein Zeichen ans Terminal /***************/ while( !(UCSRA & (1<<UDRE)) ) { ;//warten, bis der transmit buffer leer ist, so dass wieder übertragen werden kann } UDR = cData; }







Zitieren

Lesezeichen