-         

Ergebnis 1 bis 9 von 9

Thema: Auswirkungen von Baudratenfehlern (RS232)

  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    35
    Beiträge
    1.987

    Auswirkungen von Baudratenfehlern (RS232)

    Anzeige

    Moin.

    Angenommen ich hab einen 16MHz-Quarz und versuche mit einer Baudrate von 57600 zu übertragen. Rechnerisch ergibt das ja nen Fehler von 2,08% (Fehler-Rechner in Bascom)

    Wie bzw. wann genau wirkt sich dieser Fehler aus?

    Das Problem ist ja, dass die Baudrate vom Controller und die vom PC (der ja echte 57600 schafft) auseinanderlaufen.

    Beim Start der Übertragung stimmts ja noch soweit; d.h. der Fehler dürfte erst dann kommen, wenn schon eine bestimmte Menge übertragen wurde. Nur wann? 2,08% heissen ja (für mich), dass von 100 Bits 2 falsch sind.
    D.h. ich müsste erst mal 50 Bits übertragen, bevor ich nen Fehler bemerk; d.h. ich kann 6 Bytes am Stück übertragen, ohne dass ich nen Fehler bemerk. Korrekt?

    mfG
    #ifndef MfG
    #define MfG

  2. #2
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.781
    Blog-Einträge
    8
    Hallo

    Da die RS232 byteorientiert ist und zu jedem übertragenen Byte je ein Start- und ein Stopbit übertragen wird dürfte sich der Baudratenfehler nach jedem Byte quasi selbst reseten. Die 2% Fehler beziehen sich auf die Bitlänge und störten vom ersten übertragen Byte an! Ob das überhaupt funktioniert hängt von den Übertragungspartnern ab.

    Speziell für hohe Baudraten gibt es "krumme" Quarze, so wird z.B. im Datenblatt für den Mega32 (das gilt wohl generell) bei 57600 Baud ein Fehler von 0% angegeben wenn man einen 14.7456 MHz-Quarz verwendet. (unter USART/Examples of Baud Rate Setting im Datenblatt)

    Gruß

    mic

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    Ich benutze einen 16MHz Quarz und habe die Baudrate auf 115200 stehen.
    Da sagt der Bascom Rechner 7,84% Fehler, was meiner Meinung nach auch falsch ist.
    Wenn ich 1000 Sektoren von der SD Karte lese (also insgesamt 500KB) und die per RS232 zum PC ausgebe, bekomme ich überhaupt keine Fehler.
    Besonders addiert sich da nichts. Ein Sektor geht in einem Print Befehl raus.

    Gruß

    Rolf

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    31
    Beiträge
    4.255
    Hier mal als Verdeutlicheung der Problematik:
    Code:
    korrekte Baudrate: 
    |.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|
       x     x     x     x     x     x     x     x     x     x
    
    mit Abweichung
    |.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|
       x      x      x      x      x      x      x      x      x      x
    Die Bits werden gesendet und liegen im Zeitraum zwischen zwei senkrechten Strichen an. Der Empfänger muss nun den Datenstrom abtasten, um die Daten zu bekommen. Das macht er in der Mitte des Zeitraumes, in dem das Bit anliegt (obere Skizze).
    Wenn nun der Takt im Sender und im Empfänger nicht gleich sind, wird zu früh oder zu spät abgetastet. Im Bild läuft der Sender schneller als der Empfänger. Der Empfänger tastet das fünfte Bit erst ab, wenn schon das sechste Bit gesendet wird.
    Der ganze Abtastvorgang startet aber bei RS232 mit jedem Bit neu. Darum summieren sich bei mehreren Bytes die Fehler nicht. Wenn also die Abweichung so gering ist, dass es während eines Bytes keine Fehler gibt, sind auch größere Datenmengen problemlos möglich.

  5. #5
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Wenn man mit start-stop für ein Byte 10 Bit annimmt, nimmt also ein Bit 10% in Anspruch. Da der Empfänger ja versucht, die Mitte zu treffen, hat er gewissermassen rechts und links jeweils 5% Platz.
    wenn sich also zwei treffen, einer 2.5 % zu schnell, der andere 2.5 % zu langsam, wird die Übertragung kritisch.

    Wenn also der PC tatsächlich genau ist und nur der AVR um 2% daneben, sollte es keine Probleme geben. Sonst kommt's eben drauf an.

    Es kann mit dem einem Partner klappen, mit einem anderen nicht.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    35
    Beiträge
    1.987
    Wieder was gelernt. Thxle soweit.

    Einfach gesagt also: Wenn es durch auseinanderlaufende Baudraten zu Problemen kommt, dann entweder schon beim ersten Byte oder garnicht.
    #ifndef MfG
    #define MfG

  7. #7
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Für das Stopbit braicht man keine reserve, das ist immer nur dazu damit man wieder syncron werden kann. Hier kann man sich insbesondere mit 1,5 oder 2 Stopbits helfen um sicher zu sein. Es hängt aber auch von der Hardware ab, ob eventuell auch ein verkürtztes Stopbit schon reicht.

    Bei den Baudratefehler muß man auch noch berücksichtigen, das man bei hohen Baudraten eventuell noch zusätzliche verzögerungen der Pegelwandler und ggf, Störungen hat. Bei mehr Fehler in der Baudrate verringert sich dadurch die Tolleranz gegen Störungen, besonder bei hohen Baudraten.

  8. #8
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    66
    Beiträge
    10.969
    Hallo!

    Bei höheren Baudraten und langen Leitungen, können die Leitungskapazitäten des Verbindungkabels an seinem Ende die Flanken so verzögern oder/und die Pegel so verringern, dass sogar bei ideal gleichen Frequenzen keine fehlerfreie Datenübertragung möglich ist. Oft können pull-ups am Ende des Kabels helfen, wenn damit die Treiber bei "L" am Ausgang noch nicht überlastet sind.

    MfG

  9. #9
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Ganz so locker ist das mit dem Stop-Bit auch wieder nicht.
    Der Empfänger tastet es genauso ab wie die anderen und setzt dann einen "Framing"-Error oder nicht. Und dann hat die Hardware ( bei 1 Stopb.) eine halbes Bit Zeit, das Receive-Shift-Register auszuräumen, damit alles wieder für die nächste Start-Flanke bereit ist.
    Das schafft er zwar sicher, aber nix ist es auch wieder nicht.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •