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
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
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?
das komische ist ja das dieser fehler nur beim ersten mal auftritt.
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.
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.
hterm heisst das programm ist aber ähnlich, kannst du mir ein anderes empfehlen?
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...
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?
Florian Patzer wrote: > hterm heisst das programm ist aber ähnlich, kannst du mir ein anderes > empfehlen? hTerm ist in Ordnung.
Hat eventuell jemand ne ahnung wie ich das problem mit dem verlorengehenden byte beheben kann?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.