Gast
#303968
Hi,
ich bekomme den ATMega 128 UART nicht zum laufen. Bin Anfaenger und
mache irgendeinen Fehler:
Mein Code:
#define F_CPU 16000000
#define UART_BAUD_RATE 9600
void uart_init(void) {
#define UART_UBRR_CALC(BAUD_,FREQ_) ((FREQ_)/((BAUD_)*16L)-1)
UBRR0H = (uint8_t)(UART_UBRR_CALC(UART_BAUD_RATE,F_CPU)>>8);
UBRR0L = (uint8_t)UART_UBRR_CALC(UART_BAUD_RATE,F_CPU);
UCSR0B = (1 << RXEN) | (1 << TXEN);
UCSR0B |= (1 << TXEN);
UCSR0C |= (3 << UCSZ0);
}
void uart_transmit_char(unsigned char txchar) {\
while (!(UCSR0A & (1 << UDRE)));
UDR0 = txchar;
}
Weitere Infos:
ATMega128, STK500, 16MHz Quarz, XTAL1-Jumper gesetzt, OSCSEL-Jumper auf
2-3, "Ext Crystal/Resonator High Freq.; Start-up time: 16 CK +
64ms"-Fuse gesetzt.
PE0 -> TXD (RS232 SPARE Anschluss, Terminal gibt Echo, wenn ich Jumper
auf TXD & RXD setze)
PE1 -> RXD
Anders herum auch schon probiert.
Ich habe auch schon fuer die Baudrate statt der Formal verschiedene
Werte aus dem Datenblatt probiert (z.B. 103 fuer 9600 baud).