Forum: Mikrocontroller und Digitale Elektronik UART nur bis 19200 - 4.00 MHz?


von Sebastian Voitzsch (Gast)


Lesenswert?

Hallo,

ich habe einen ATmega162L (die Low-Voltage-Version, max. 8 MHz) mit
4MHz-Quarz und RS-232 via MAX-232, Verbindung wie im UART-Tutorial.
Alles funktioniert soweit, aber ich bekomme die serielle Verbindung nur
bis max. 19200 zum laufen, schneller geht nix. Im Datenblatt zum 162
sind aber für 4MHz max. 252kbit/s angegeben.

Das RS-232-Kabel ist micht übermäßig lang (knapp 2m); geschirmt ist es
auch (ist eine RS-232-Leitung eines anderen Geräts).

Any hints?

Danke,
Sebastian

von Thorsten (Gast)


Lesenswert?

Hallo,

laut Datenblatt beträgt der Fehler für Baudraten >19k2 mehr als 2%. Für
eine zuverlässige RS232-Übertragung ist aber ein Fehler von <2%
erforderlich. Nimm ein Quarz mit 3.6864MHz oder 7.3728MHz, dann müßte
es funktionieren.

Viel Erfolg.

Gruß
Thorsten

von Markus Kaufmann (Gast)


Lesenswert?

Hast Du Dir im Datenblatt auf Seite 190 die "Examples of Baud Rate
Setting" angeschaut? Dort steht drin, daß man mit einem 4MHz Quarz
keine der üblichen Baudraten so richtig trifft.

Ein Fehler von 0,2% ist normalerweise ok, aber der Fehler sollte 2%
nicht übersteigen. Bei den Datenblättern der anderen Chips (z.B.
ATMega8) sind die gültigen Baudraten in Fettschrift angegeben.

Wenn Du U2X auf 0 gesetzt hast, dann ist bei 19200bps schluß, bei U2X=1
bei 38400. Darüber hinaus werden die Fehler so groß, daß keine
Verbindung mehr zustande kommt. 250kbps und 500kpbs wären dann wieder
ohne Fehler, aber das können die wenigsten Gegenstellen; ein PC kann es
jedenfalls nicht.

Abhilfe:
a) Setzt U2X auf 1, dann kommst Du immerhin auf 38400bps.
b) Benutz einen anderen Quarz, z.B. einen mit 3,686411 MHz.

Markus

von Sebastian Voitzsch (Gast)


Lesenswert?

Hallo allerseits,

danke für die Tipps, das hatte ich natürlich überlesen... Mal sehen,
wie ich mich aus der Affäre ziehe; einen 3,686er Quarz habe ich gerade
nicht da, und eigentlich brauche ich die RS-232 ja nur zum debuggen.

Erstmal werde ich es mit einem 1.8432er probieren; ich hoffe nur, daß
das Ganze dann nicht insgesamt zu langsam wird (zum Testen sollen aber
eigentlich nur die empfangen Bytes "durchgereicht" werden, das sollte
passen).

Gruß,
Sebastian

PS: Tolles Forum hier, besonders das Tutorial gefällt mir sehr. Evtl.
noch um ein paar C-Beispiele ergänzen - nicht jeder mag gleich in
Assembler loslegen!

von Sebastian Voitzsch (Gast)


Lesenswert?

Hallo nochmal,

mit dem 1.8432 klappt's tatsächlich mit 115200 auf Anhieb. Wenn ich
jetzt noch den Programmfehler finde, der dafür sorgt, daß das
SPI-Interface sich nicht mit meinem MAS 3507 unterhält, sollte ich bald
was "auf die Ohren" bekommen ;o)

Sebastian

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.