mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Fehler bei RS232


Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich verwende bei 16Mhz eine Baudrate von 38000, leider werden recht
viele Fehler übertragen, wisst ihr, wie ich das ändern kann?
Gruß
Martin

Autor: leo9 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
baudrate auf 38400 ändern, dadurch sinkt der Fehler von 1,2% auf 0,2%;
anderen Quarz verwenden oder die UART in SW nachbilden, dann sind fast
alle krummen baudraten möglich.

grüße leo9

Autor: Thorsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Woran erkennst du, daß Fehler übertragen werden? Die üblichen
Terminalprogramme kennen z. B. nur 38400 Baud, klar das dann Fehler
auftreten.

Gruß
Thorsten

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh, sry meinte 38400. Das komische ist, dass die Fehler bei einem Pc mit
Win 98 ME auftreten, den ich für die µC's verwende, da es mit XP grad
net geht. Wenn ich den µC jedoch mit dem XP-Pc verbinde, geht es.

Autor: Thorsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aha, seltsam! Probier mal ein anderes Terminalprogramm. Hast du auch das
Handshaking ausgeschaltet, vorausgesetzt du benutzt es nicht?

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hm,
also wenn ich auf dem Win 98 Pc mit einer Baudrate von 2400 bei 1 Mhz
sende klappt es, das dumme ist halt nur, dass ich ne Zeitmessung bauen
will und da schon gern 16Mhz hätte und net immer zum XP-PC umswitchen
will. An zu alter Hardware wird es bei einem PC mit 900 Mhz ja wohl
nicht liegen oder?

Autor: Robert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Martin

fehlen dir Zeichen oder werden falsche Zeichen empfangen? In welcher
Datenrichtung passieren die Fehler?

Robert

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich sende vom µC an den PC, und es werden teils Zeichen wie @ angezeigt.

Autor: Max Headroom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du willst eine Zeitmessung bauen? Erzähl mal mehr davon. Was für Zeiten
willst du messen (rein interessehalber)?

MH

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Zeitmessung soll für eine Carrerabahn herhalten, jetzt muss ich mal
sehn, wie ich das mach wenn das an dem einen PC nicht richtig klappt
mit 16 MHZ.

Autor: Max Headroom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aha, Carrerabahn.

Zeitmessung hab' ich auch schon gemacht. Mit der PC-Kommunikation
hatte ich da nie Probleme. Das sollte eigentlich zu schaffen sein. Zum
Testen auf der PC-Seite schreibe ich mir immer ein VB Programm, dass
alles mitloggt. Aber warum muss denn die Baudrate so hoch sein? Ich
nehme fast immer 9600.

Autor: Jens123 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Evtl. Parity, start / stop bit oder sowas???

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Zeitmessung kann es doch herzlich egal sein, ob 16MHz oder sonstwas,
hauptsache es ist quarzstabil.

Falls Du es vergessen hast, der AVR kann auch rechnen, z.B. beliebige
Zählwerte umrechnen in 1/1000 Sekunden oder was Du willst (kannst es
aber auch den PC machen lassen).

Für übliche Baudraten ist ein Standardquarz z.B. 11,0592 oder
14,7456MHz gut geeignet.


Peter

Autor: Robert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Martin,

wenn ein @ angezeigt wird, was für ein Zeichen hast du stattdessen
erwartet? Das deutet evtl. auf einen framing error hin. Will heissen
Baudrate ist ungenau oder Datenlänge, parity, stoppbits sind falsch
eingestellt.

Wenn ich eine Übertragung teste, fange ich immer damit an eine binäre 0
zu senden, und schau ob die jeweils auf der anderen Seite ankommt. Du
könntest z.B. auch vom PC am Anfang immer 0en senden und damit deine
Baudrate am AVR abgleichen. Dazu misst man die Zeit vom Start- zum
Stoppbit, teilt das ganze z.B. durch 9 oder 10 je nach Datenlänge und
hat die Bitlänge. Das ist universell und geht auch mit RC
Oszillatoren.

Robert

Autor: Thorsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du ein Scope? Wenn ja, schau dir an, wie lange die Bits sind.

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
also ein Oszi hab ich (leider) nicht. Mit 38400 Baud sende ich, da mit
nem 16 MHZ nur diese Baudrate geht oder?

Autor: Thorsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auf welchen Wert hast du das UBRR-Register gesetzt? Es muß für
38400Baud@16MHz auf 25 stehen.

Autor: Jens123 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, cih habe bisher Übertragungsraten zwichen 9600 und 19200
getestet. Bei einem Quarz mit 8MHz und RC Oszilator von 4 / 8 MHz

in asm und c war es nie ein problem

versuch evtl. mal einen anderen Terminal
der von Br@y ist sehr gut klein fein genau ;)

zumindest besser, als Hyperterminal

bei ASM Habe ich die werte so defniert:
.equ sramstart = 0x0060
.equ CLOCK = 8000000
.equ BAUD = 9600
.equ UBRRVAL = CLOCK/(BAUD*16)-1

        ; Baudrate einstellen
        ldi temp, LOW(UBRRVAL)
        out UBRRL, temp
        ldi temp, HIGH(UBRRVAL)
        out UBRRH, temp

        ; Frame-Format: 8 Bit
        ldi temp, (1<<URSEL)|(3<<UCSZ0)
        out UCSRC, temp

        sbi UCSRB, RXCIE                  ; Interrupt bei Empfang
        sbi UCSRB, RXEN                   ; RX (Empfang) aktivieren
     sbi UCSRB, TXEN                    ; TX aktivieren

in dieser Art sollte es auch in C kein thema sein
Peter Fluery hat eine gute lib dazu in c geschrieben

Gruss Jens

Autor: Michael Wilhelm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Clock steht auf 8MHz und oben erwähnest du 16MHz.
MW

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hm, ich verwende im Moment noch Bascom. Und auf dem Rechner mit XP, der
viel neuer ist geht es ja auch mit dem Programm.

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.