UART Problem bei 57600 Baud

#2158790
Lesenswert?

Hi Leute,

ich habe ein Problem mit dem USART im ATMega168.
Er ist mit 16 MHz getaktet und funktioniert soweit ganz gut mit 9600 
Baud.
Ich möchte aber eine externe Hardware ansteuern die 57600 verlangt. Die 
Datenrate ist zwar nicht nötig, aber ich kann das nicht ändern.
Wenn ich jetzt die Baudrate auf 57600 umstelle kommen bei mir nur noch 
kryptische Zeichen an. Laut Datenblatt gibt das eine Fehlerrate von 2,1% 
was ja noch im Rahmen ist...

Zu dem speziellen Problem hab ich der Suche jetzt nichts gefunden. Das 
Datenblatt und die Checkliste hat mir auch nicht weiter geholfen.

Hier mein Init Codeschnipsel
1
#define F_CPU 16000000UL
2
#define BAUD 57600UL // Baudrate
3
#include <util/setbaud.h>
4

5
void uart_init() {
6
  UCSR0B |= (1 << TXEN0); // UART TX einschalten
7
  UCSR0B |= (1 << RXEN0); // UART RX einschalten
8
  UCSR0B |= (1 << RXCIE0); // UART RX Interrupt einschalten
9

10
  UCSR0C |= (1 << UCSZ01) | (1 << UCSZ00); // Asynchron, 8Bit
11

12
  //Baudrate setzten
13
  UBRR0H = UBRRH_VALUE;
14
  UBRR0L = UBRRL_VALUE;
15
}

Habt ihr eine Idee ?

Gruß
Gast #2158798
Lesenswert?

Hi

>Er ist mit 16 MHz getaktet und funktioniert soweit ganz gut mit 9600
>Baud.
>Ich möchte aber eine externe Hardware ansteuern die 57600 verlangt. Die
>Datenrate ist zwar nicht nötig, aber ich kann das nicht ändern.

Bei 16MHz haben 57600Bd einen Fehler von 2,1%. Nicht mehr so richtig im 
grünen Bereich. Probiere mal Double Speed oder nimm einen 
Baudraten-Quart.

MfG Spess

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren