Forum: Mikrocontroller und Digitale Elektronik uart übertragung kontrollieren


von Florian P. (eckel)


Lesenswert?

Hallo Leutz,

wollte gerne mal wissen ob es eine möglichkeit gibt, die serielle 
übertragung zwischen pc und µC irgendwie anzuhalten?
Habe nämlich das Problem das ich über den UART daten sende und dann in 
den internen eeprom schreibe, nach 128byte muss ich nun die daten in den 
speicher brennen. für diese zeit von 10ms müsste die serielle 
schnittstelle warten sonst geht mir der rest verloren...

von Karl H. (kbuchegg)


Lesenswert?

Florian Patzer wrote:

> wollte gerne mal wissen ob es eine möglichkeit gibt, die serielle
> übertragung zwischen pc und µC irgendwie anzuhalten?
> Habe nämlich das Problem das ich über den UART daten sende und dann in
> den internen eeprom schreibe, nach 128byte muss ich nun die daten in den
> speicher brennen. für diese zeit von 10ms müsste die serielle
> schnittstelle warten sonst geht mir der rest verloren...

Dafür gibt es das sog. Handshake in der Spez. einer seriellen
Schnittstelle. In einem deutschen Windows ist das dann die
Einstellung die sich hinter 'Datenflusskontrolle' verbirgt.

von Florian P. (eckel)


Lesenswert?

kannste mir das mal etwas näher erklären?

MfG Florian

von Karl H. (kbuchegg)


Lesenswert?

Florian Patzer wrote:
> kannste mir das mal etwas näher erklären?
>

Sicher.
Du solltest aber auch danach googeln. Alle Details dazu lassen
sich nicht in 5 Zeilen Text unterbringen.

Grundsätzlich gibt es 3 Handshaking Methoden:
* keines
* Software Handshake
* Hardware Handshake

keines brauchen wir hier nicht näher erläutern.
Grundsätzlich geht es beim Handshake immer darum, dass der Empfänger
dem Sender signalisiert: Einen Moment bitte, ich bin noch nicht
bereit weitere Daten zu empfangen.

Dass kann man auf 2 Arten machen: Soft und Hard
Hard bedeutet, dass es an der RS232 Schnittstelle 2 Leitungen
gibt (jeweils eine für jede Übertragungsrichtung) die nur entsprechenden
Pegel annehmen müssen, um der Gegenstelle anzuzeigen, dass das Senden
momentan aufzuhören hat. Die Signale heissen an einer RS232:
RTS bzw. CTS (Request To Send, Clear To Send)
Der Vorteil von Hard-Handshake ist, dass es dadurch keinerlei
Einschränkungen in den übertragenen Daten gibt, im Gegensatz zum
Software Handshake.
Beim SW-Handshake werden 2 spezielle Codes im Datenstrom benutzt,
mit denen der Empfänger den Sender wieder abwürgen kann: XON und XOFF
Benötigt der Empfänger etwas Zeit, sendet er ein XOFF. Woraufhin der
Sender dann das Senden einstellt (man sollte aber immer mit ein-
kalkulieren, dass auch der Sender etwa Zeit benötigt um auf den
XOFF zu reagieren. Es kann also schon sein, dass nach einem XOFF
noch ein paar Zeichen kommen). Ist der Empfänger wieder bereit,
sendet er ein XON und der Sender macht weiter. Klar sein sollte
allerdings, dass dadurch die Codes für XON und XOFF im regulären
Datenstrom nicht vorkommen dürfen.

That's it. In a nutshell.
Wichtig ist: Beide, Sender und Empfänger müssen darin übereinstimmen,
welche Form von Handshake benutzt wird.

Und dann gibt es natürlich noch das weite Feld der selbstdefinierten
Protokolle. Wenn man die beiden Programme für Sender und Empfänger
selbst unter Kontrolle hat, ist das oft auch eine Option.
Zb. sendet der Sender einfach mal 256 Bytes und wartet dann auf
eine Bestätigung vom Empfänger bevor er weitere 256 Bytes schickt.
Der Empfänger holt sich die 256 Bytes, verarbeitet sie und schickt
erst dann die Bestätigung, wenn er wieder aufnahmebereit ist.

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.