mikrocontroller.net

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


Autor: Sebastian Voitzsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Thorsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Markus Kaufmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sebastian Voitzsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Sebastian Voitzsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.