Ich bin drauf reingefallen, dass man beim ATmega 16 ein Bit mehr setzen muss (nämlich das URSEL Bit), als bei allen anderen ATmegas. Denn beim ATmega 16 haben zwei Register für den seriellen Port die selbe physikalische Adresse!
Im Makefile:
-DBAUD=9600 -DF_CPU=15000000
Im C Programm:
Code:// set baudrate UBRRH = UBRRH_VALUE; UBRRL = UBRRL_VALUE; #if USE_2X UCSRA |= (1 << U2X); #else UCSRA &= ~(1 << U2X); #endif // enable receiver and transmitter UCSRB = (1<<RXEN) | (1<<TXEN); // framing format 8N1 #ifdef URSEL UCSRC = (1<<URSEL) | (1<<UCSZ1) | (1<<UCSZ0); #else UCSRC = (1<<UCSZ1) | (1<<UCSZ0); #endif







Zitieren

Lesezeichen