Forum: Mikrocontroller und Digitale Elektronik Uart Kommunikation


von Einstein (rai)


Angehängte Dateien:

Lesenswert?

Hallo , kann jemand bitte diese Frage lösen ?
Danke

von Thilo L. (bc107)


Lesenswert?

Klar, das ist eine recht klare, einfache Fragestelllung. Aber die 
wirkliche Frage ist nicht, ob hier Jemand diese Frage beantworten kann, 
sondern warum Du sie nicht beantworten kannst.

Zeig doch mal mit einigen Ausführungen, wo Dein Verständnisproblem 
liegt, was Du schon so an intellektuellem Aufwand getrieben hast, oder 
auchh nur Deine Erwartungshaltung, warum wir deine Aufgaben lösen 
sollen.

von Hermann Kokoschka (Gast)


Lesenswert?

Anunaya schrieb:> kann jemand bitte diese Frage 
lösen ?
Ja. Du! Es sind Deine Hausaufgaben.

Es gibt vielleicht etwas Hilfe, wenn Du erstmal genau schreibst, wie 
weit Deine eigenen Überlegungen bisher gingen.

von Wf88 (wf88)


Lesenswert?

Irgendwas um 1800 herum....

von Einstein (rai)


Lesenswert?

Danke für die Rückmeldung. Ich bin erste mal in diese Forum und ich 
wusste die Regeln nicht .

Also ich denke ich wähle 9600 bit/ s weil für Uart Kommunikation 9600 
Bit/s sinnvoll ist und pärität Bit ohne weil ich brauche parität Bit nur 
Fehler zu überprüfen. Ich glaube 7 Bit/s werde ich wählen weil dazu auch 
noch statt und stop Bit vorkommen und mit 8 Bit/s wäre die Messwerte 
Übertragung langsamer.
Ist das korrekt?

von Wächter (Gast)


Lesenswert?

Nähere Informationen findest Du dort:
Beitrag "Einheitlicher Umgang mit faulen Schülern etc.?"

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Anunaya schrieb:
> Ist das korrekt?
"so schnell wie möglich" ist die einzige Forderung. Ist die mit deiner 
Lösung erfüllt?

Die Aufgabe b) wird dann unerwartet interessant.

Da fragt man sich doch glatt: was macht man mit dem nicht verwendeten 
Bit in jedem 2. Byte?

: Bearbeitet durch Moderator
von Thilo L. (bc107)


Lesenswert?

Die Einführung der Einheit "7 bit/s" bzw. "8 bit/s" ist auch 
interessant...

von Einstein (rai)


Lesenswert?

Also ich habe geschrieben Was ich könnte , mehr fällt mir gar nicht ein 
. Bitte kann jemand mir die hinwiese geben wie ich die löse ? Ihr 
braucht nicht Lösung zu geben aber nur verraten wie ich denken soll ?

von Thilo L. (bc107)


Lesenswert?

Anunaya schrieb:
> Also ich denke ich wähle 9600 bit/ s weil für Uart Kommunikation 9600
> Bit/s sinnvoll ist und pärität Bit ohne weil ich brauche parität Bit nur
> Fehler zu überprüfen. Ich glaube 7 Bit/s werde ich wählen weil dazu auch
> noch statt und stop Bit vorkommen und mit 8 Bit/s wäre die Messwerte
> Übertragung langsamer.
> Ist das korrekt?

Wenn Du für jede Deiner obigen Entscheidungen das exakte Gegenteil 
nimmst, wird's sinnvoll und richtig. Aber Überlege Dir halt auch, warum. 
Deine Begründungen der Art "weil für Uart Kommunikation 9600 Bit/s 
sinnvoll ist", kannst du getrost vergessen, denn wenn es eine solche 
pauschale Antwort gäbe, dann hätte Dein Lehrer gar nicht erst die Frage 
nach der Übertragungsrate gestellt.

von Thilo L. (bc107)


Lesenswert?

Anunaya schrieb:
> Also ich habe geschrieben Was ich könnte , mehr fällt mir gar
> nicht ein
> . Bitte kann jemand mir die hinwiese geben wie ich die löse ? Ihr
> braucht nicht Lösung zu geben aber nur verraten wie ich denken soll ?

Na ja: denke doch mal so:

Du hast die Wahl zwischen drei Autos: eines kann 50 Km/h, eines 100, das 
dritte 200 Km/h fahren. Du wirst gefragt, wit welchem Du am schnellsten 
eine Last transportieren kannst. Welches Auto wählst Du?

Wenn Du diese Nuss geknackt hast, bastelst Du Dir einen ähnlichen 
Vergleich mit der maximalen Nutzlast eines Autos und der Gesamtlast, die 
Du transportieren sollst. Was kannst Du mit einer Fahrt transportieren, 
und wieviel mal musst Du für die Gesamtlast die Strecke fahren) So 
könnte es was werden mit einer analytischen Denkweise...

: Bearbeitet durch User
von Wf88 (wf88)


Lesenswert?

38400,8n1

Macht 9 Bits pro zu übertragendem Byte, 18bits pro Messwert.

2133 Messwerte pro Sekunde. Mit den 1800 hatte ich mich grob 
ver-überschlagen.

von Einstein (rai)


Lesenswert?

Also ich wähle 200km / h weil das schnellste ist . dann wähle ich 38400 
bit/s.

von Mario M. (thelonging)


Lesenswert?

Wf88 schrieb:
> 2133 Messwerte pro Sekunde. Mit den 1800 hatte ich mich grob
> ver-überschlagen.

Immer noch falsch.

von Thilo L. (bc107)


Lesenswert?

Ich glaube, Ihr helft dem TO mehr, wenn Ihr statt fertiger unbegründeter 
Lösungen den gedanklichen Ansatz aufzeigt.
Mit allem gebührenden Respekt und so, sorry, wenn ich Euch auf 
irgendwelche Zehen getreten habe.

: Bearbeitet durch User
von Martin (Gast)


Lesenswert?

Wenn du nun 15 Maschinen transportieren muss, nimmst du den LKW der 7 
Maschinen transportieren kann oder den der 8 kann? Wie brauchst du am 
wenigsten LKWs?

von Wf88 (wf88)


Lesenswert?

Mario M. schrieb:
> Wf88 schrieb:
>> 2133 Messwerte pro Sekunde. Mit den 1800 hatte ich mich grob
>> ver-überschlagen.
>
> Immer noch falsch.

8 Datenbits + 1 Stopbits pro Byte.
2 Bytes = 18bit.

38400 / 18 = 2133

Was ist daran falsch?


(Mann wie ich dieses "falsch . (PUNKT)" hasse, ohne dass da mehr kommen 
würde von den Oberlehrern....)

von Lothar J. (black-bird)


Lesenswert?

8n1 sind aber 10 Bits.
Bei 15 Bit pro Meßwert und rein binären Übertragung werden 2 x 10 Bits 
benötigt. Wenn der Empfänger mal außer Tritt kommt, so interpretiert er 
den Meßwert falsch, da hilft auch kein 0- oder 1-Bit vorn oder hinten am 
15-Bit-Meßwert zur Synchronisation.

Den Meßwert als ASCII-kodierten Hexwert übertragen und vorweg noch ein 
Nicht-ASCCI-Zeichen zur Synchronisation senden sind 5 x 10 Bits.
Und die mit 38k übertragen.

Blackbird

von Martin (Gast)


Lesenswert?

Startbit

von Einstein (rai)


Lesenswert?

Ich wähle die 8 transportieren kann . Ich nehme die 2 LKW. Dann ich 
wähle 8bit.

von Lothar J. (black-bird)


Lesenswert?

Wf88 schrieb:
> 8 Datenbits + 1 Stopbits pro Byte.
> 2 Bytes = 18bit.
>
> 38400 / 18 = 2133
>
> Was ist daran falsch?
>
> (Mann wie ich dieses "falsch . (PUNKT)" hasse, ohne dass da mehr kommen
> würde von den Oberlehrern....)

Du hast das Startseite vergessen ..

Blackbird

von Martin (Gast)


Lesenswert?

@ Lothar : Ich glaube zur Lösung der Aufgabe gehört nicht noch ein 
Protokoll zu berücksichtigen.

von Wf88 (wf88)


Lesenswert?

Martin schrieb:
> Startbit

ouh, da hab ich das obligatorische Starbit unterschlagen....

Zählt die Ausrede "bei 8n1 wird das ja nicht mit angegeben?" ;)

von Lothar J. (black-bird)


Lesenswert?

Lothar J. schrieb:
> Du hast das Startseite vergessen ..

Das sollte Startbit  heißen ...

Blackbird

Beitrag #7306406 wurde vom Autor gelöscht.
von Lothar J. (black-bird)


Lesenswert?

Martin schrieb:
> @ Lothar : Ich glaube zur Lösung der Aufgabe gehört nicht noch ein
> Protokoll zu berücksichtigen.

Naja, zu einem Protokoll gehört dann aber auch ein Re-Transmitting des 
falschen Meßwertes. Dann braucht man noch eine Nummerierung und ein paar 
Befehle, ...

Bei der von mir vorgeschlagenen Methode wird nur ein Meßwert falsch 
übertragen, ohne jedoch alle folgenden.

Blackbird

von Martin (Gast)


Lesenswert?

Lothar J. schrieb:
> Bei der von mir vorgeschlagenen Methode wird nur ein Meßwert falsch
> übertragen, ohne jedoch alle folgenden.

Trotzdem ist es ein einfaches Protokoll. Re-Transmitting usw. ist nicht 
bei jedem Protokoll notwendig.

Zum anderen würde es dann aber auch noch küzer / schneller gehen.

von Anselm (Gast)


Lesenswert?

am schnellsten ist 8 bit ohne stop bit und ohne parity
Begründung: der zu übertragende Messwert hat 15 Bit, nehme ich 7bit pro 
Paket  muss ich 3 Pakete verwenden. Bei 8 Bit reichen auch 2
Baud 38400 ist klar, schneller gleich besser
macht also 2x (startbit Datenpaket) => 18 Bit pro übertragenen Messwert.

verstanden?

Anselm

von Einstein (rai)


Lesenswert?

Nach alle Hinweise ich habe mich folgende Einstellung überlegt :

Baudrate : 38400 Bit/s
Parität  : ohne
Anzahl : 8 Bit

15 Bits d.h 20 bits pro Messwerte .
In eine Sekunde : 38400/20 = 1920
1920 messwerte pro Sekunde .
Ist das korrekt????

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Martin schrieb:
> Ich glaube zur Lösung der Aufgabe gehört nicht noch ein Protokoll zu
> berücksichtigen.
Das sollte man dann aber dazuschreiben...

Denn wenn ich schon nicht erkennen muss, welches das High- und welches 
das Low-Byte ist, dann würde ich in das 16. unbenutze Bit jeweils noch 1 
Bit eines zusätzlichen Datenworts "einschleusen" und könnte dann 
tatsächlich die volle Bandbreite nutzen:
1 Start + 8 Daten + 1 Stop ergibt 10 zu übertragende Bits pro Datenbyte. 
so könnt eich 3840 Byte/s übertragen. Und in 30 solcherart übertragenen 
Bytes passen dann 15 + 1 solcher 15-Bit Messwerte.

Ergo könnte ich mit meinem Verfahren 3840/30 * 16 = 2048 Messwerte pro 
Sekunde übertragen (statt nur 1920, wenn ich das 16. Bit unbenutzt 
lasse).

von Lothar J. (black-bird)


Lesenswert?

Anselm schrieb:
> am schnellsten ist 8 bit ohne stop bit und ohne parity

Gibt's dafür auch Hardware? Ohne Stoppbit funktionieren die UARTs nicht.

Blackbird

von Einstein (rai)


Lesenswert?

Ohne stop Bit ,? Ist auch möglich bei Uart Kommunikation??

von Martin (Gast)


Lesenswert?

Nach dem Stoppbit wird nicht gefragt und außerdem ist immer mindestens 
eins dabei (so weit ich weiß).

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Wenn man das Stopbit weglässt, kann man das Startbit auch gleich 
weglassen...

von Martin (Gast)


Lesenswert?

Lothar M. schrieb:
> Martin schrieb:
>> Ich glaube zur Lösung der Aufgabe gehört nicht noch ein Protokoll zu
>> berücksichtigen.
> Das sollte man dann aber dazuschreiben...

Ich würde das umdrehen ... Was nicht da steht muss nicht berücksichtigt 
werden.

Was nicht verboten ist, ist erlaubt ;-)

von Wächter (Gast)


Lesenswert?

Einstein schrieb:
> aber nur verraten wie ich denken soll

Logisch sollst Du denken.

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Eins ist klar, der Aufgabensteller hat per se viel Langeweile und will 
sein WE mit dem Nachdurchdenken der vielen möglichen richtigen Antworten 
verbringen.

Oder es fehlt noch einiges der kompletten Aufgabenstellung.

von Cyblord -. (cyblord)


Lesenswert?

Einstein schrieb:
> Also ich wähle 200km / h weil das schnellste ist . dann wähle ich 38400
> bit/s.

Langsam machst du deinem Namen alle Ehre. Respekt. Manche müssen dazu 
3,4 oder gar 5 Jahre alt werden um sowas zu lösen.

von Stefan F. (Gast)


Lesenswert?

Einstein schrieb:
> Ist das korrekt????

Ja

Von dem schnelleren Protokoll aus 
Beitrag "Re: Uart Kommunikation" will dein Lehrer 
sehr wahrscheinlich nichts hören. Ich könnte die Idee mit einem 
Kompressions-Algorithmus noch weiter spinnen, aber auch das wäre hier 
wohl fehl am Platz.

von Stefan F. (Gast)


Lesenswert?

Lothar M. schrieb:
>> Ich glaube zur Lösung der Aufgabe gehört nicht noch ein Protokoll zu
>> berücksichtigen.
> Das sollte man dann aber dazuschreiben...

Hast du vergessen, wie deine Ausbildung war? Selbst in meiner Prüfung 
liess jede zweite Aufgabe Interpretationsspielraum. Wer im Unterricht 
aufgepasst hat und die Übungsaufgaben gemacht hat, wusste was von einem 
erwartet wird.

von Achim H. (pluto25)


Lesenswert?

Einstein schrieb:
> Ohne stop Bit ,? Ist auch möglich bei Uart Kommunikation??
Ja zu sagen wäre sicher falsch. In Ausnahmefällen könnte das gehen.
z.B. ein Software Uart der die bits einzeln aufgreift ist nach dem 
achten Datenbit (dem 9. incl Startbit) fertig und kann dann ein weiteres 
Byte empfangen. Wäre mal interessant zu sehen wie kurz ein Stopbit 
werden darf bevor der Empfänger kollabiert ;-)

von Wolfgang (Gast)


Lesenswert?

A. H. schrieb:
> Wäre mal interessant zu sehen wie kurz ein Stopbit
> werden darf bevor der Empfänger kollabiert ;-)

Das dürfte unter anderem von der Toleranz der Taktfrequenzen bei Sender 
und Empfänger abhängen. Außerdem gibt es nicht den Empfänger. Es wird 
von der Implementierung abhängen.
Wenn man am Framing etwas sparen möchte, ist eine asynchrone Übertragung 
die falsche Wahl.

von Achim H. (pluto25)


Lesenswert?

Klar, das Ergeniss würde dann auch nur für den getesten Empfäger 
stimmen.
Wenns schneller gehen soll nimmt man eine höhere Baudrate das bringt 
mehr als ein Stopbit einzusparen. Und funktioniert dann auch noch wenn 
ein Gerät ersetzt wird.
In den Einstellmöglichkeiten Oben wird das Stopbit nicht erwähnt 
(1,1.5,2) daher kann man davon ausgehen das es ein Stopbit ist das nicht 
wegbleiben kann. Somit hat man die Wahl von 9 (7bit,none) bis 11bit 
(8bit,parity) Datensatzlänge.

von Peter D. (peda)


Lesenswert?

Thilo L. schrieb:
> Klar, das ist eine recht klare, einfache Fragestelllung.

Ist sie nicht.
Würde man für die 15 Datenbits abwechselnd die UART zwischen 7/8Bit 
umschalten, ist der Empfang von Datenmüll garantiert. Das fällt also 
flach.

Da 15 Bits nicht in einen UART-Frame von 8 Bit passen, ist zwingend ein 
Protokoll notwendig. Da dieses Protokoll aber nicht genannt wird, ist 
dessen Overhead unbekannt und somit die Frage nicht beantwortbar.

Und neben der Synchronisation des Datenframes ist weiterer Overhead 
notwendig, um den Haufen von Meßwerten z.B. den jeweiligen Meßpunkten 
zuordnen zu können.

Eine extrem dreckige Möglichkeit wäre, das Paritätsbit zu mißbrauchen, 
um low- und high-Byte zu unterscheiden.

von A. S. (Gast)


Lesenswert?

A. H. schrieb:
> Ausnahmefällen könnte das gehen.
> z.B. ein Software Uart der die bits einzeln aufgreift ist nach dem
> achten Datenbit (dem 9. incl Startbit) fertig und kann dann ein weiteres
> Byte empfangen.

Nein, es geht nicht.

Wenn Du sagst, es geht nur für bestimmte bitmuster, dann ist das albern. 
Ohne Stopp können 100 Bits in Folge Low sein. Damit brauchst Du 
Bitstuffing oder ähnliches und hast keinen sinnvollen Nutzen mehr

von A. S. (Gast)


Lesenswert?

Wolfgang schrieb:
> A. H. schrieb:
>> Wäre mal interessant zu sehen wie kurz ein Stopbit
>> werden darf bevor der Empfänger kollabiert ;-)
>
> Das dürfte unter anderem von der Toleranz der Taktfrequenzen bei Sender
> und Empfänger abhängen

Und von der Abtastung des Empfängers + jitter/Asymmetrie der Flanken.

Bei perfekter Baudrate und perfekten Flanken (0ns) muss das stoppbit 
schon 2 abtasttakte lang sein (bzw. 1, weil man 0,5 Bit Reserve an 
beiden Seiten hat).

Flankenjitter und Asymmetrie gehen direkt ein, baudratendifferenzen in 
Prozent x Anzahl der Bits (bei 10 Bits und 3% waren das +- 30% einer 
bitbreite.

Kleiner als 1 bitbreite braucht das nicht zu werden, da man dann die 
Baudrate erhöhen kann.

größer als 1,1 macht keinen Sinn, da sonst das vorletzte Bit ebenfalls 
falsch ist.

Warum gibt es dann 1,5 oder 2? Weil damit bei Back to Back Kommunikation 
der Empfänger eher synchronisiert, falls er aus dem Tritt kommt.

von Uwe K. (ukhl)


Lesenswert?

Einstein schrieb:
> Nach alle Hinweise ich habe mich folgende Einstellung überlegt :
>
> Baudrate : 38400 Bit/s
> Parität  : ohne
> Anzahl : 8 Bit
>
> 15 Bits d.h 20 bits pro Messwerte .
> In eine Sekunde : 38400/20 = 1920
> 1920 messwerte pro Sekunde .
> Ist das korrekt????

Dafür würde ich die volle Punktzahl geben.

Unglücklich ist natürlich, dass das notwendige Start- und Stoppbit in 
der Fragestellung nicht auftaucht. Aber Du hast es berücksichtig und 
bist bei 8-Bit Daten auf eine Übertragungslänge von 10-Bit gekommen.

Typisch für solche Aufgaben aus dem Studium ist, das die Übertagung in 
höchster Geschwindigkeit nicht funktioniert. Bei einer pausenlosen 
Übertragung ist das HSB bzw. LSB nicht zu erkennen. Selbst eine 
Bit-Synchronisation der UART ist eher zufällig. Es muss immer eine Pause 
zwischen den Datenpaketen eingelegt werden. Eine Pause von einem Byte 
(10-Takt-Bits) sorgt für eine zuverlässige Übertragung. Das Start-Bit 
ist dann jederzeit erkennbar und auch das HSB/LSB ist problemlos zu 
unterscheiden. In dem Fall wären wir bei 30 Bits pro Übertagung. Damit 
sind wir bei 1280 Messwerte die zuverlässig pro Sekunde übertragen 
werden können.

Von Tricksereien, die das letzte Bit bei der Übertagung herausholen, ist 
grundsätzlich abzuraten. KISS - keep it short and simple.

Für den Prof. sind es 1920 Messwerte pro Sekunde.

Zuverlässig sind es 1280 Messwerte pro Sekunde.

von Sebastian (Gast)


Lesenswert?

Uwe K. schrieb:
> Eine Pause von einem Byte (10-Takt-Bits) sorgt für eine zuverlässige
> Übertragung. Das Start-Bit ist dann jederzeit erkennbar

Häh?

LG, Sebastian

von A. S. (Gast)


Lesenswert?

Uwe K. schrieb:
> Das Start-Bit
> ist dann jederzeit erkennbar und auch das HSB/LSB ist problemlos zu
> unterscheiden. In dem Fall wären wir bei 30 Bits pro Übertagung. Damit
> sind wir bei 1280 Messwerte die zuverlässig pro Sekunde übertragen
> werden können.

Das ist das, was schon sehr früh abgefrühstückt wurde:

Martin schrieb:
> @ Lothar : Ich glaube zur Lösung der Aufgabe gehört nicht noch ein
> Protokoll zu berücksichtigen.

Und Pausen einlegen wäre eine sehr ineffektive und schwierige Art eines 
Protokolls (nicht alle Uarts geben dafür die notwendige Info). Für das 
Uart-Synchronisierungsproblem gehen auch 2 Stoppbits, für das Protokoll 
reichen z.B. 2 aufeinanderfolge Bytes mit dem höchstwertigen Bit 
gesetzt.

Vielleicht können wir uns einigen, dass die errechnete Geschwindigkeit 
ein Maximalwert ist, der zwar fast, aber nur im Idealfall ganz erreicht 
werden kann.

von Wolfgang (Gast)


Lesenswert?

Uwe K. schrieb:
> Bei einer pausenlosen
> Übertragung ist das HSB bzw. LSB nicht zu erkennen.

> Von Tricksereien, die das letzte Bit bei der Übertagung herausholen, ist
> grundsätzlich abzuraten. KISS - keep it short and simple.

Was wäre so kompliziert daran, drei Zeichen mit 7 Bit zu übertragen.
Dann hat man insgesamt 21 Bit zur Verfügung, von den 15 für Nutzdaten 
verwendet werden (5 Bit pro übertragenem Zeichen) und jeweils zwei Bit 
für eine Nummerierung zur Verfügung stehen?

von Martin (Gast)


Lesenswert?

Weil dies nicht der Aufgabenstellung entspricht.

von Euro (Gast)


Lesenswert?

Sende alle zwei Sekunden zwei aufeinanderfolgende 0x00 zur 
Synchronisation und setze ansonsten das nicht benötigte 16. Bit auf 1.
Dann sind's immer noch gerundete 1920 Messwerte pro Sekunde.

von Dietrich L. (dietrichl)


Lesenswert?

Uwe K. schrieb:
> Unglücklich ist natürlich, dass das notwendige Start- und Stoppbit in
> der Fragestellung nicht auftaucht.

Indirekt schon, denn da steht "Sie haben eine UART". Da ist 
definitionsgemäß ein Start- und ein Stopbit enthalten.

von W.S. (Gast)


Lesenswert?

Einstein schrieb:
> Danke für die Rückmeldung. Ich bin erste mal in diese Forum und ich
> wusste die Regeln nicht .

Naja, du großer Denker, es sind eigentlich nicht die Regeln des Forums, 
sondern etwas, das der normale Menschenverstand gebietet. Man soll als 
Lernender sich selbst um die Lösung der Aufgaben bemühen und nicht 
danach trachten, selbige von anderen gelöst zu bekommen.

Allerdings sehe ich beim Lesen der Aufgabenstellung etwas, das mich 
ärgert: Da wird von 15 Bit pro Meßwert geschrieben. Sowas legt nahe, daß 
der Lehrer an eine rein binäre Übertragung gedacht hatte. Ja, das geht, 
aber bei einer seriellen Übertragung hat man es eigentlich immer mit dem 
Transportieren von Daten zwischen zwei verschiedenen Geräten zu tun - 
und die können intern eben mit unterschiedlichen Darstellungen arbeiten. 
(ja, können aber nicht müssen) Und deshalb ist es sinnvoll, Daten eben 
NICHT rein binär zu übertragen, sondern als Texte nebst Trennzeichen, 
aus denen man ersehen kann, wo ein Meßwert endet und wo der nächste 
beginnt.

Das nur zur guten Praxis, es steht nicht explizit in der 
Aufgabenstellung.

W.S.

von c-hater (Gast)


Lesenswert?

W.S. schrieb:

> aber bei einer seriellen Übertragung hat man es eigentlich immer mit dem
> Transportieren von Daten zwischen zwei verschiedenen Geräten zu tun -
> und die können intern eben mit unterschiedlichen Darstellungen arbeiten.

So what? Heutzutage arbeiten fast alle Protokolle seriell und rein binär 
codiert. Von SATA über HDMI über USB bis sonstwohin. Das tut der 
Funktion keinen Abbruch, auch wenn hunderte von verschiedensten Chips 
beteiligt sind.

> Und deshalb ist es sinnvoll, Daten eben
> NICHT rein binär zu übertragen, sondern als Texte nebst Trennzeichen

Nein, ist es nicht. Und genau deshalb wird es auch fast nirgendwo mehr 
so gemacht.

Alle anderen definieren einfach die Bedeutung jedes einzelnen Bits im 
Protokoll. Wie die einzelnen Geräte das dann intern behandeln, spielt 
überhaupt keine Rolle. Es muss halt einfach nur richtig im Sinne der 
Prokolldefinition gemacht werden. Das ist alles.

> Das nur zur guten Praxis

Das war gute Praxis, als man die Bytes noch mitlesen konnte. Wenn aber 
MBit/s oder gar GBit/s über die Strippen gehen sollen, ist es einfach 
nur noch Unsinn von epischen Ausmaßen.

Und die Aufgabenstellung zielte ganz eindeutig auf möglichst hohen 
Durchsatz.

von Karl B. (gustav)


Angehängte Dateien:

Lesenswert?

c-hater schrieb:
>> Und deshalb ist es sinnvoll, Daten eben
>> NICHT rein binär zu übertragen, sondern als Texte nebst Trennzeichen
>
> Nein, ist es nicht. Und genau deshalb wird es auch fast nirgendwo mehr
> so gemacht.

Da kommen auch Fehler rein, wenn es "jittert".
Egal ob ASCII oder rein binär.

ciao
gustav

von Peter D. (peda)


Lesenswert?

c-hater schrieb:
> Wenn aber
> MBit/s oder gar GBit/s über die Strippen gehen sollen

Bei 38,4kBaud denke ich natürlich auch sofort an GBit/s.

Text über die UART ist durchaus weit verbreitet und nicht jede Anwendung 
braucht maximale Geschwindigkeit. Man kann dann die Ausgabe einfach in 
eine Datei umleiten und lesen.

von Klaus (feelfree)


Lesenswert?

Peter D. schrieb:
> nicht jede Anwendung braucht maximale Geschwindigkeit.

Die Aufgabe lautet aber nun mal "so schnell wie möglich".
Thema verfehlt, setzen, 6.

von Wolfgang (Gast)


Lesenswert?

Martin schrieb:
> Weil dies nicht der Aufgabenstellung entspricht.

Worauf beziehst du dich mit diesem weisen Beitrag?

von Klaus (feelfree)


Lesenswert?

Wolfgang schrieb:
> Was wäre so kompliziert daran, drei Zeichen mit 7 Bit zu übertragen.
> Dann hat man insgesamt 21 Bit zur Ver

Er bezieht sich auf deinen Beitrag zuvor, der eine Lösung vorschlägt, 
die nicht zum Problem passt.

von Wolfgang (Gast)


Lesenswert?

Klaus schrieb:
> Er bezieht sich auf deinen Beitrag zuvor, der eine Lösung vorschlägt,
> die nicht zum Problem passt.

Heißt du Martin?
Aber sei's drum ...

Wie stellst du dir denn vor, sicherzustellen, dass die Bits richtig 
zugeordnet werden?

Gegenüber der Lösung mit zwei 8-Bit Zeichen und einer Pause von 10 
Bitzeiten spart man mit drei 7-Bit Zeichen immerhin 10% der 
Übertragungszeit.
Stand in der Aufgabe nicht irgendetwas von "so schnell wie möglich"?

von STK500-Besitzer (Gast)


Lesenswert?

Das ist doch eine rein theoretische Aufgabe ohne Realitätsbezug (typisch 
pädagogisch).
Ob es nicht einfach darum, ob jemand die Einheit "bits/s" etc. 
verstanden hat?
Kennt jemand den weiteren Zusammenhang?

von Klaus (feelfree)


Lesenswert?

Wolfgang schrieb:
> Wie stellst du dir denn vor, sicherzustellen, dass die Bits richtig
> zugeordnet werden?

Das überlege ich mir dann, wenn mir jemand diese Aufgabe stellt und ich 
sie lösen muss/soll/darf.

Konkret würde ich hier in seltenen Abständen (sagen wir mal einmal pro 
Sekunde) 0xff 0xff übertragen, und das unbenutzte Bit bei Messwerten 
immer zu 0 setzen. Damit ist eine einfache Synchronisation möglich und 
fast nix an Bandbreite verschenkt.

Wolfgang schrieb:
> Stand in der Aufgabe nicht irgendetwas von "so schnell wie möglich"?

Genau. Und nix über höherschichtige Protokolle.

von Monk (roehrmond)


Lesenswert?

c-hater schrieb:
> Heutzutage arbeiten fast alle Protokolle seriell und rein binär
> codiert. Von SATA über HDMI über USB bis sonstwohin.
> ... wird es auch fast nirgendwo mehr so gemacht.

Gegenbeispiele:

- Kommandos bei Modems und Bluetooth Modulen
- GPS Empfänger
- Kommunikation zwischen Backend-Systemen (REST, SOAP, JSON, XML)

> Das war gute Praxis, als man die Bytes noch mitlesen konnte.

Genau dazu ist es immer noch gute Praxis.

> Wenn aber MBit/s oder gar GBit/s über die Strippen gehen sollen, ist
> es einfach nur noch Unsinn von epischen Ausmaßen.

Hier geht es nicht um MBit/s oder gar GBit/s.

> Und die Aufgabenstellung zielte ganz eindeutig auf möglichst
> hohen Durchsatz.

Bei 38400 Baud. Wir sind uns allerdings einig, dass eine Textcodierung 
der Daten wohl nicht Bestandteil der Aufgabe war.

Wenn ich so einen Entwicklungsauftrag bekommen würde, wäre das eine 
meiner ersten Rückfragen: "Wollen wir die Daten nicht lieber in 
maschinen- und meschen-lesbarer Form codieren?". Insofern fand ich den 
Hinweis von W.s. durchaus sinnvoll.

: Bearbeitet durch User
von Wolfgang (Gast)


Lesenswert?

Steve van de Grens schrieb:
>> Das war gute Praxis, als man die Bytes noch mitlesen konnte.
>
> Genau dazu ist es immer noch gute Praxis.

<ironie>Heutzutage, wo Übertragungsrate quasi kostenlos ist spielt 
Effizienz der Übertragung quasi keine Rolle mehr.</ironie>

von Euro (Gast)


Lesenswert?

Ob ich nun einen Datensatz per jSON oder XML übertrage oder als binäre 
Struktur - ich finde beides nicht anstößig.

von Wolfgang (Gast)


Lesenswert?

Euro schrieb:
> Ob ich nun einen Datensatz per jSON oder XML übertrage oder als binäre
> Struktur - ich finde beides nicht anstößig.

Wenn 15-Bit möglichst schnell und damit möglichst effizient übertragen 
werden sollen, sind sowohl jSON als auch XML dafür denkbar ungeeignet, 
jedenfalls solange die Übertragungsgeschwindigkeit durch die Symbolrate 
limitiert ist.

von Falk B. (falk)


Lesenswert?

Einstein schrieb:
> Hallo , kann jemand bitte diese Frage lösen ?
> Danke

Im Ernst? Dieser Kinderkram war früher 8 Klasse Niveau. Heute sind damit 
vermutlich die BÄTSCHELORS schwer gefordert.

von Christian M. (christian_m280)


Lesenswert?

Zum Stopbit, siehe auch interessanten Thread:

Beitrag "Re: UART Startbit/StopBit"

Da es ja je nach Empfänger fraglich ist, ob
1. das SB gar nicht ausgewertet wird und der Empfänger sofort wieder 
bereit ist?
2. Das SB ausgewertet wird aber wann der Empfänger wieder bereit ist? 
Nach 1/2 SB? Nach dem Letzten Abtasten?

Wenn das SB sowieso kürzer sein darf spielt es keine Rolle mehr, wenn 
der Empfänger sauber in den Stream eingerastet ist.

Gruss Chregu

von Roland P. (pram)


Lesenswert?

Man könnte auch das Paritätsbit als 9tes Bit missbrauchen, in dem man 
dynamisch zwischen e un o umschalter. Somit würde man 9 Payload-Bytes in 
11 Bytes rein bekommen (außer man will das Stop-Bit auch noch weg 
lassen)

38400 / 11 * 9 / 15 = 2094 Werte.

Und ohne Stop-Bit:

38400 / 10 * 9 / 15 = 2304 Werte.

Keiner würde das so machen, aber das wäre "so schnell wie möglich" (ohne 
Kompression)

Gruß Roland

von A. S. (Gast)


Lesenswert?

Christian M. schrieb:
> Zum Stopbit, siehe auch interessanten Thread:
> Beitrag "Re: UART Startbit/StopBit"

So sollte es m.E sein (nur beim Sender) ist aber nicht so. Es gibt uC, 
die dann auch "längere" stoppbits erwarten

> Da es ja je nach Empfänger fraglich ist, ob
>
> das SB gar nicht ausgewertet wird und der Empfänger sofort wieder bereit
> ist?
> Das SB ausgewertet wird aber wann der Empfänger wieder bereit ist? Nach
> 1/2 SB? Nach dem Letzten Abtasten?

Es gibt (bei 1 stoppbit) nur eine sinnvolle Art der Auswertung: genau 1 
Bitlänge nach dem letzten Bit und auf identische Weise.

Meist bei z.b. 3/8, 4/8 und 5/8, best of 3.

Und startbereit dann bei 5/8.

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.