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;
}
Lesezeichen