nö, weil in uart_get ist ja ein loop_unti_bit_is_set
Hier mal der geupdatete funktionierende code:
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_println(char *s, int len) { while(len--) { loop_until_bit_is_set(UCSRA, UDRE); UDR = *s; s++; } loop_until_bit_is_set(UCSRA, UDRE); UDR = '\n'; loop_until_bit_is_set(UCSRA, UDRE); UDR = '\r'; } uint8_t uart_readChar(void) { loop_until_bit_is_set(UCSRA, RXC); 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_readChar(); char result[2]; result[0] = c; result[1] = 0; uart_println(result, 1); } return 0; }






Zitieren

Lesezeichen