Forum: Mikrocontroller und Digitale Elektronik Probleme mit Hardware Handshake


von Florian P. (eckel)


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

von Michael U. (amiga)


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

von Florian P. (eckel)


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?

von Florian P. (eckel)


Lesenswert?

das komische ist ja das dieser fehler nur beim ersten mal auftritt.

von Karl H. (kbuchegg)


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.

von Karl H. (kbuchegg)


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.

von Florian P. (eckel)


Lesenswert?

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

von Florian P. (eckel)


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...

von Karl H. (kbuchegg)


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?

von Karl H. (kbuchegg)


Lesenswert?

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

hTerm ist in Ordnung.

von Florian P. (eckel)


Angehängte Dateien:

Lesenswert?

so siehts aus is aber assembler...

von Florian P. (eckel)


Lesenswert?

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

von Florian P. (eckel)


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?

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.