Code:
#include <avr/io.h>
#include <avr/sfr_defs.h>

#define F_CPU         8000000 // 8MHz Taktfrequenz
#define BAUD_RATE      9600   // gewünschte Baud-Rate für UART


void uart_put(char c) {
	loop_until_bit_is_set(UCSRA, UDRE);
	UDR = c;
}

void uart_puts(char *s) {
	while(*s) {
		uart_put(*s);
		s++;
	}
	uart_put('\n');
	uart_put('\r');
}

uint8_t uart_get(void) {
	loop_until_bit_is_clear(UCSRA, RXEN);
	return UDR;
}

void uart_init(int tx, int rx) {
   	UBRRL = (F_CPU/(BAUD_RATE*16l)-1);
	if(tx == 1) {
		UCSRB |= (1<<TXEN);
	}
	if(rx == 1) {
		UCSRB |= (1<<RXEN);
	}
}

int main (void) {
   uart_init(1, 1);

   while(1)
   {
	char c = uart_get();
	uart_put(c);
	uart_put('\n');
	uart_put('\r');
   }

   return 0;
}
Das Programm soll ein Zeichen empfangen und es gleich wieder ausgeben. Es funktioniert soweit ganz gut, aber wenn er einmal angefangen hat ein Zeichen auszugeben hört er nicht mehr auf damit. Woran liegt das?

mfg
jagdfalke