Forum: Mikrocontroller und Digitale Elektronik AVR: Problem Übertragungsgeschwindigkeit


von Sebastian Z. (sz1985)


Lesenswert?

Hallo zusammen,

ich bin gerade dabei einen kleinen Teil des MODBus Protokolls auf einem 
Atmega32 zu integrieren. Ich habe aktuell das Problem, dass die Zeit zum 
Empfangen eines Zeichens nicht mit der Zeit laut Baudrate übereinstimmt.

Die Baudrate ist auf 9600 eingestellt, wenn ich einen 8 bit Timer beim 
ersten empfangen zeichen starte und nach Empfang der gesamten Bootschaft 
ausgebe, bekomme ich Zeiten die für mich unerklärlich sind.

11 Bit sind ein Frame und somit komme ich bei einer Baudrate von 9600 
auf eine Zeit pro Frame von 1,1458ms. Der gemessene Wert mittels Timer 
beträgt aber im Schnitt pro Frame ca. 4,5 - 4,6 ms. Kann mir jemand 
sagen, wo mein Fehler liegt?


Vielen Dank im Vorraus!

Gruss

Sebi

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Innerhalb eines Frames kommen die Bits mit 9600 Baud. Zwischen den 
Frames kann sich der Sender beliebig viel Zeit lassen. Wenn du die 
Messung der Framezeit über Framezeit + Zwischenframezeit machst und dann 
durch die Zahl der Frames teilst, kann das die Beobachtung erklären.

von Sebastian Z. (sz1985)


Lesenswert?

Das verstehe ich, aber nach dem Protokoll von MODBus für serielle 
Übertragung darf zwischen 2 Zeichen maximal 1,5 * Framezeit liegen. Die 
Zeit zwischen senden des ersten Frame bis zum nächsten darf 2,5 * 
Framezeit, also 2,86ms sein.

Zwiscchen request und respones muss beim MODBus eine Zeit von 3,5 Frame 
liegen. Dieses Kriterium wollte ich zum erkennen des Ende eines Frames 
und zum "Startschuss" für die respones nehmen.

Das ist so aber leider nicht möglich.

von Sebastian Z. (sz1985)


Lesenswert?

Kann das eigentlich an der Schnittstelle liegen.bzw. kann das 
pausenverhalten über Einstellungen im gerätemanager beeinflußen?

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.