Hallo, probiere gerade bei einem AVR Mega8 den UART in Betrieb zu nehmen und eine Verbindung zum PC aufzubauen. Das klappt mit void uart0_init(void) { UCSRB = 0x00; //disable while setting baud rate UCSRA = 0x00; UCSRC = (1 << URSEL) | (3 << UCSZ0); UBRRL = 0xBF; //set baud rate lo UBRRH = 0x00; //set baud rate hi UCSRB = (1 << RXEN) | (1 << TXEN); } auch "gut". Ich kann Zeichen senden und empfangen. Was mich aber stutzig macht (im main): while (1) { if (PINB & (1<<PINB3)) { sent = 0; } else { PORTC &= ~(1<<PC0); } if (PINB & (1<<PINB2)) { if (sent < 10) { uart_putc('H); uart_putc('M'); uart_putc('\n'); uart_putc('\r'); sent ++; } else { PORTC |= (1<<PC3); } } else { PORTC &= ~(1<<PC3); } } wird nach dem Einschalten/Reset ständig gesendet, obwohl ich den Taster an PortB.2 nie drücke. Woran liegt das? Außerdem bekomme ich beim verwenden der uart_puts("HM\n\r\0"); Funktion nur "komische" Zeichen geliefert, d.h. ich kann nur einzelne Zeichen empfangen. Was mache ich falsch? Hans
Gast
#404404
Wie ist der Taster denn angeschlossen? Low-Side oder High-Side? Sollte mich nicht wundern, wenn die UART aufhört zu senden, wenn Du den Taster drückst...
AAAARRRRGGGGGHHHH. wie peinlich. Sorry für das Posting, aber es ist echt so wie du sagst. Hast du evtl. auch eine Lösung für das 2. Problem, das ich bei uart_puts nur komische Zeichen empfange? Hans