www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik uart übertragung kontrollieren


Autor: Florian P. (eckel)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Florian P. (eckel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kannste mir das mal etwas näher erklären?

MfG Florian

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.