www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Probleme mit Hardware Handshake


Autor: Florian P. (eckel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Controller-Freunde,

hab da ein Problem mit dem seriellen Hardware Handshake meines 8051 ein 
Paar Probleme.
Und zwar:

- sobald ich die serielle Übertragung stoppe um die empfangenen Daten in 
den internen EEPROM zu brennen und sie danach wieder starte wird das 
übernächste empfangene Byte einfach weggelassen, es fehlt
z.B. ich schicke den satz " Hallo wie gehts?" nach dem Hallo stoppe ich 
die Übertragung am ende empfängt mein Controller den Satz "Hallo ie 
gehts?" das "w" ist einfach fort das passiert egal wann ich die 
Übertragung zwischendurch stoppe immer ist das übernächste Byte fort.

MfG Flo

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

die Übertragung stoppt im Allgemeinen erst, wenn der sendende Part 
seinen Buffer losgeworden ist. Das können durchaus auch mehr Zeichen 
sein.
Du mußt also nach dem Stop noch solange empfangen, bis nichts mehr 
kommt.

Ich bin deshalb für sowas auf das alte XMODEM ausgewichen, das sendet 
immer 128 Byte Blöcke und wartet dann auf ein ACK vom µC. Hat allerdings 
evtl. andere Nachteile.

Gruß aus Berlin
Michael

Autor: Florian P. (eckel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
was passiert eigentlich wenn ich die serielle datenübertragung stoppe?
wird das byte währenddessen gestoppt wird übertragen und beim starten 
mit dem nachfolgenden byte begonnen oder das vorhergehende nochmals 
gesendet?

Autor: Florian P. (eckel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das komische ist ja das dieser fehler nur beim ersten mal auftritt.

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

Bewertung
0 lesenswert
nicht lesenswert
Florian Patzer wrote:
> was passiert eigentlich wenn ich die serielle datenübertragung stoppe?
> wird das byte währenddessen gestoppt wird übertragen und beim starten
> mit dem nachfolgenden byte begonnen oder das vorhergehende nochmals
> gesendet?

Du kannst die Übertragung überhaupt nicht stoppen.
Du kannst lediglich der Gegenstelle deinen Wunsch vortragen,
sie möge doch bitte das Senden einstellen.
Ob und wann die Gegenstelle auf diesen Wunsch reagiert, liegt
im Ermessen der Gegenstelle.

Genau deshalb musst du nach der Äusserung dieses Wunsches
noch eine Zeitlang empfangsbereit bleiben und noch mögliche
Zeichen aufnehmen können.

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

Bewertung
0 lesenswert
nicht lesenswert
Florian Patzer wrote:
> das komische ist ja das dieser fehler nur beim ersten mal auftritt.

Du verwendest nicht zufälligerweise Hyperterminal?
Ich kann mich dunkel an eine ähnliche Fehlerbeschreibung
bei Hyperterminal im Zusammenhang mit Handshake erinnern.

Autor: Florian P. (eckel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hterm heisst das programm ist aber ähnlich, kannst du mir ein anderes 
empfehlen?

Autor: Florian P. (eckel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
es kommt ja nochwas dazu und zwar kann ich meinem controller nicht mehr 
als 22 byte schicken, schicke ich mehr sendet er nur die ersten 22 
byte...

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

Bewertung
0 lesenswert
nicht lesenswert
Florian Patzer wrote:
> es kommt ja nochwas dazu und zwar kann ich meinem controller nicht mehr
> als 22 byte schicken, schicke ich mehr sendet er nur die ersten 22
> byte...

Spätestens jetzt wird es spannend.
Wie sieht denn dein Programm aus?

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

Bewertung
0 lesenswert
nicht lesenswert
Florian Patzer wrote:
> hterm heisst das programm ist aber ähnlich, kannst du mir ein anderes
> empfehlen?

hTerm ist in Ordnung.

Autor: Florian P. (eckel)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
so siehts aus is aber assembler...

Autor: Florian P. (eckel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat eventuell jemand ne ahnung wie ich das problem mit dem 
verlorengehenden byte beheben kann?

Autor: Florian P. (eckel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Probleme mit dem Seriellen Handshake liessen sich mittlerweile 
lösen.
Auch der Rest konnte behoben werden.
Eine Frage ist jedoch neu aufgekommen und zwar ist mir aufgefalle das 
nach einem angemeldeten stoppen der Übertragung die noch gesendeten 
Daten in der Anzahl der Bytes variieren Bsp. die ersten beiden Stopps 
sind es 2 nachfolgende Bytes, das dritte mal 4...
kann man die größe des Puffers einstellen sodass immer die gleiche 
Anzahl an Bytes gesendet wird?

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.