Forum: Mikrocontroller und Digitale Elektronik UART Problem bei 57600 Baud


von Jens H. (juehv)


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ß

von spess53 (Gast)


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

von spess53 (Gast)


Lesenswert?

Hi

Baudraten-Quart -> Baudraten-Quarz

MfG Spess

von Jens H. (juehv)


Lesenswert?

spess53 schrieb:
> Bei 16MHz haben 57600Bd einen Fehler von 2,1%. Nicht mehr so richtig im
> grünen Bereich.

Dachte unter 3% is noch brauchbar ...

spess53 schrieb:
> Probiere mal Double Speed

Was ist Double Speed ??

Gruß

von spess53 (Gast)


Lesenswert?

Hi

>Was ist Double Speed ??

Datenblatt lesen!

U2X-Bit in UCSRA setzen und Bauratenregister neu berechnen. 57600Bd im 
Double-Speed Mode ergeben 0,8% Fehler.

MfG Spess

von (prx) A. K. (prx)


Lesenswert?

2-3% sind nur dann noch leidlich vertretbar, wenn es der Gesamtfehler 
gegenüber der Gegenseite ist. Wenn die jedoch ebenfalls nur über den 
Daumen peilt, aber in die andere Richtung...

von Jens H. (juehv)


Lesenswert?

spess53 schrieb:
> U2X-Bit in UCSRA setzen und Bauratenregister neu berechnen. 57600Bd im
> Double-Speed Mode ergeben 0,8% Fehler.

Probier ich aus, danke !

von spess53 (Gast)


Lesenswert?

Hi

>Probier ich aus, danke !

Sinnvoller ist aber ein Bauratenquarz. Z.B. 14,745600MHz.

MfG Spess

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.