Die 12 würde jedenfalls für 8Mhz passen...
Mit den internen 1Mhz kriegst du deine Baudrate nicht hin. Schon deswegen, aber auch wegen der größeren Taktgenauigkeit müsstest du also die Fusebits auf den externen Quarz umstellen.
Mit welcher Übertragungssoftware und mit welcher ISP-Variante arbeitest du?
PS: das Berechnen der Werte für die Register kann auch der Präprozessor erledigen (siehe mikrocontroller.net-Tutorial)
Code:
/* USART-Init beim ATmega32 */
#ifndef F_CPU
#define F_CPU 8000000 /* Oszillator-Frequenz in Hz hier angeben */
#endif
// Hilfsmakro zur UBRR-Berechnung ("Formel" laut Datenblatt)
#define UART_UBRR_CALC(BAUD_,FREQ_) ((FREQ_)/((BAUD_)*16L)-1)
#define UART_BAUD_RATE 38400 //gewünschte Baudrate hier angeben
UBRRH = (uint8_t)(UART_UBRR_CALC(UART_BAUD_RATE,F_CPU)>>8);
UBRRL = (uint8_t)UART_UBRR_CALC(UART_BAUD_RATE,F_CPU);
Lesezeichen