Hender
09.05.2006, 15:01
Hallo,
ich habe bei meiner Schaltung den ATMega32L 8AI (8Mhz) aufgrund eines Defektes gegen eine ATMega32 16AU (16Mhz) ersetzen müssen. In der Schlatung gibt es einen externen Quarz mit 8Mhz. Seitdem funktioniert das Uart nicht mehr, obwohl ich meines Wissens nach das Register UBRRL richtig angepasst habe. Ich möchte eine Baud-Rate von 38400 haben.
Was fehlt denn hier? Evtl. habe ich was übersehen. Vielleicht kann mir jemand von Euch helfen. Danke
Hier mein Uart-Init-Code:
// Initialisierung UART
void uart_init (void)
{
/* USART-Init 38400 Baud bei 8MHz für Mega32 */
UCSRB = ( (1<<RXCIE) | (1<<RXEN) | (1<<TXEN) );
/* Einstellen des Datenformats: 8 Datenbits, 1 Stoppbit */
UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);
UBRRH = 0; // Highbyte ist 0
UBRRL = 25; // beim ATmega32L 8AI stand hier 12
}
ich habe bei meiner Schaltung den ATMega32L 8AI (8Mhz) aufgrund eines Defektes gegen eine ATMega32 16AU (16Mhz) ersetzen müssen. In der Schlatung gibt es einen externen Quarz mit 8Mhz. Seitdem funktioniert das Uart nicht mehr, obwohl ich meines Wissens nach das Register UBRRL richtig angepasst habe. Ich möchte eine Baud-Rate von 38400 haben.
Was fehlt denn hier? Evtl. habe ich was übersehen. Vielleicht kann mir jemand von Euch helfen. Danke
Hier mein Uart-Init-Code:
// Initialisierung UART
void uart_init (void)
{
/* USART-Init 38400 Baud bei 8MHz für Mega32 */
UCSRB = ( (1<<RXCIE) | (1<<RXEN) | (1<<TXEN) );
/* Einstellen des Datenformats: 8 Datenbits, 1 Stoppbit */
UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);
UBRRH = 0; // Highbyte ist 0
UBRRL = 25; // beim ATmega32L 8AI stand hier 12
}