Forum: Mikrocontroller und Digitale Elektronik RS323- Verbindung


von Nores M. (Firma: Hochschule MUC) (noreson)


Lesenswert?

Servus,
habe hier eine RS232-Verbindung und will damit einen Wert mit 16 Bit 
Länge verschicken.
Dazu habe ich eine Übertragungsgeschwindigkeit von 19200 Baud gewählt.
Ich bin mir jetzt aber nicht sicher, wie ich auf die richtige Dauer der 
Übertragung komme.

Kann mir wer bitte helfen?

MfG

von Christian M. (Gast)


Lesenswert?

Nores M. schrieb:
> Wert mit 16 Bit
> Länge verschicken

Den musst Du wohl oder übel in 2 Bytes à 8 Bit übertragen. Die 
Uebertragung dauert dann 2 RS232 Sequenzen lang (noch je nach Anzahl 
Stoppbits).

Geht's Dir um die Zerlegung des Werts in 2 Bytes? Also Softwareseitig?

Gruss Chregu

von Georg G. (df2au)


Lesenswert?

16 Bit wirst du als 2 Bytes mit je 1 Startbit, 8 Datenbits und 1 Stopbit 
verschicken. Feiglinge nehmen 2 Stopbits. Es sind also 20 (22) Bits zu 
senden. bei 19200 Bits pro Sekunde dauert die Übertragung minimal etwas 
über 1ms.

von Berni S. (bernycontroller1)


Lesenswert?

Georg G. schrieb:
> 16 Bit wirst du als 2 Bytes mit je 1 Startbit, 8 Datenbits und 1
> Stopbit
> verschicken. Feiglinge nehmen 2 Stopbits. Es sind also 20 (22) Bits zu
> senden. bei 19200 Bits pro Sekunde dauert die Übertragung minimal etwas
> über 1ms.

Meinst du 8 Bits die gelesen bzw. geschrieben werden + Acknowledge und 8 
Bits Daten + Acknowledge?
Mit Start und Stopbit sind das dann die von dir gewählten 20?

Gruß Berni

: Bearbeitet durch User
von Georg G. (df2au)


Lesenswert?

Berni S. schrieb:
> Meinst du

16 Bit am Stück wäre theoretisch möglich. Ich kenne aber keinen UART,der 
das kann. Üblich sind 8 Bit am Stück. Also musst du deine 16 Bit in zwei 
Häppchen teilen. Von Acknowledge steht nichts im ersten Post...

von Nores M. (Firma: Hochschule MUC) (noreson)


Lesenswert?

Georg G. schrieb:
> bei 19200 Bits pro Sekunde

Reden Sie über die Bitrate?
Mir ginge es um die Baudrate aber ich kann mit der Einheit Symbole pro 
Sekunde nicht viel anfangen.

Christian M. schrieb:
> Geht's Dir um die Zerlegung des Werts in 2 Bytes? Also Softwareseitig?
Richtig aber es geht hier nur um die Übertragungsdauer, die ich gerne 
wissen würde.

von Georg G. (df2au)


Lesenswert?

Nores M. schrieb:
> Reden Sie über die Bitrate?
> Mir ginge es um die Baudrate

Bei RS232 ist die Bitrate gleich der Symbolrate (Baudrate).

von Nores M. (Firma: Hochschule MUC) (noreson)


Lesenswert?

Alles klar, danke.

Gruß Michi

von W.S. (Gast)


Lesenswert?

Nores M. schrieb:
> Richtig aber es geht hier nur um die Übertragungsdauer, die ich gerne
> wissen würde.

Oh nein, es geht bei dir vor allem um das prinzipielle Verständnis, was 
mir zu fehlen scheint.

Also: per RS232 kannst du keine 16 Bit Zahlen übertragen. Punkt. Das muß 
erstmal begriffen werden.

Du kannst hingegen Zeichen übertragen, ein jedes maximal 8 Bit lang 
(jedenfalls bei normalen Übertragungsarten). Üblich sind 5..8 Bit.

Also mußt du dir Gedanken machen, wie du deine 16 Bit sinnvoll derart 
zerlegst, daß du auf der Empfangsseite erkennen kannst, wo das jeweilige 
erste Stück im Empfangsstrom sich befindet. Kurzum, eben die 
Synchronisation.

Dann bedenke, daß zu deinen Nutz-Bits eben noch mindestens 1 Startbit 
und 1 Stopbit hinzukommt. Besser sind jedoch 1 1/2 oder 2 Stopbits, wenn 
man lückenlos zu senden einplant. Sonst kann es nämlich gegegentlich zum 
Verheddern kommen.

Möglicherweise willst du deine Übertragung per Paritätsbit etwas 
sicherer machen, dann kommt eben noch ein Bit zu jedem gesendeten 
Zeichen hinzu.

So, jetzt hast du alle Bestimmungsstücke, die du zu deiner Berechnung 
benötigst.

W.S.

von Nores M. (Firma: Hochschule MUC) (noreson)


Lesenswert?

Vielen Dank !

Also was ich verstanden habe :
16 Bits sind 2 Bytes das heißt, ich muss 20 Symbole(2 Startbits + 2 
Stopbits + 16 Bit)  mit 19200 Baud schicken
um die minimale Dauer des Übertragungs gilt die folgende Formel :
1 Baud = Bits/s

Die Dauer = Bitsumme/ Baud = 20/19200 = 1ms.

von Dietrich L. (dietrichl)


Lesenswert?

Nores M. schrieb:
> Die Dauer = Bitsumme/ Baud = 20/19200 = 1ms.

Ja, aber Du solltest dabei wissen:
Das ist ohne jegliche Datensicherung und Synchronisierung.

Datensicherung: z.B. Parity, Cheksum, Quittung
Synchronisierung: wenn die Daten lückenlos übertragen werden kann der 
Empfänger im Datenstrom nicht erkennen, was das erste und was das zweite 
Byte ist.

D.h. je nach Anforderungen dauert die Übertragung erheblich länger.

von Wolfgang (Gast)


Lesenswert?

Nores M. schrieb:
> Dazu habe ich eine Übertragungsgeschwindigkeit von 19200 Baud gewählt.
> Ich bin mir jetzt aber nicht sicher, wie ich auf die richtige Dauer der
> Übertragung komme.

Rechne einfachheitshalber damit, dass du insgesamt 3 Bytes übertragen 
musst. Pro Byte kommen noch ein Start- und mindestens ein Stopbit dazu, 
so dass die Übertragung insgesamt mindestens 30 Bitzeiten oder 1.563ms 
dauert. Falls du ununterbrochen senden möchtest - s.o. Thema 
Resynchronisation bei Fehlern.

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.