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?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; }
mfg
jagdfalke







Zitieren

Lesezeichen