Forum: PC-Programmierung Übermittlungsprobleme, RS232, Hyperterminal


von Rafi (Gast)


Lesenswert?

Hallo zusammen,

habe folgendes Problem:

Ich übermittle dem PC (Hyperterminal) Daten über die serielle
Schnittstelle. Das Problem liegt nun darin, dass ein einzelnes Zeichen
auf dem Terminal dargestellt, hingegen ein String einfach
"verschluckt" wird. Ich versuchte anschliessend, beim Senden eines
Strings (übrigens alles vom uC) nach jedem Zeichen eine kurze Pause
einzulegen (1ms); dann funktionierte die Übermittlung des Strings, das
Hyperterminal zeigte mir diesen an.

Das Problem muss beim PC liegen, auf praktisch allen anderen PCs (auch
XPs, wie meiner) funktioniert die Übertragung problemlos.

Wie bringe ich das auf meinem PC zum Laufen?

Vielen Dank schon im Voraus für Eure Hilfe!
Gruss Rafi

von Stefan (Gast)


Lesenswert?

Hat der böse PC vielleicht keinen FiFo-Chip UART?
http://byterunner.com/why.html

von Rafi (Gast)


Lesenswert?

Hallo Stefan,

doch, der "böse" PC hat einen FIFO Chip.

Es scheint, als würde die serielle Schnittstelle zu selten abgefragt
werden. Wenn ich jede Millisekunde ein Zeichen sende, funktioniert
alles tip top, nur wenn ich den ganzen String aneinander hänge kommt
nichts heraus.

Gruss Rafi

von Frankl (Gast)


Lesenswert?

Also ich sende z.B. Screenmasken über die RS232 mit maximaler Baudrate
115200 Baud Quarz 7.3728 MHz PC Hyper Terminal keine Probleme.
Senderoutine wird gepollt.

Sendch:
sbis USR,UDRE
rjmp Sendch
out UDR, daten

von Rafi (Gast)


Lesenswert?

Bei mir ist es so, dass die Übermittlung auf den meisten Computern
funktioniert. Eigentlich sollte die Baud- Rate keine grosse Rolle
spielen, die Computer sind ja noch viel schneller. Ich dachte zuerst,
dass ich ein Pegelproblem habe, doch auch mit einem MAX232
funktionierte die Stringübermittlung nicht.

Ist es eigentlich das Bios, welches die serielle Schnittstelle
verwaltet? Ist es möglich, dass ich ein Bios- Update machen muss?

Gruss Rafi

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Nein, das BIOS hat seitdem es Windows gibt, nichts mehr mit den
seriellen Schnittstellen am Hut. Es findet zwar noch 'raus, daß es sie
gibt, aber das interessiert sonst nicht weiter.
Das war schon zu Zeiten des reinen 16-Bit-Windows (3.0) so. Bereits
dieses Windows hat einen interruptgesteuerten Betrieb der seriellen
Schnittstelle unterstützt.

Und seitdem die Standardschnittstelle den 16550 verwendet, gibt es
einen -üblicherweise auch nicht deaktivierten- Empfangsfifo.
Du könntest im Gerätemanager nachsehen, ob der deaktiviert ist.

Womit erzeugst Du die Sendebaudrate Deines Gerätes?

von Rafi (Gast)


Lesenswert?

Vielen Dank für eure Hilfe,

das Problem hat sich erledigt. Eigentlich ganz simpel: Nachdem ich beim
uC die serielle Schnittstelle initialisiert habe, habe ich sofort
begonnen mit dem Senden von Daten. Jetzt habe ich eine kurze Pause von
1ms nach der Initialisierung vorgesehen und schon läuft die
Kommunikation problemlos.

Ich bin mir zwar nicht sicher, wieso das so ist, aber Hauptsache es
funktioniert. Wahrscheinlich braucht die serielle Schnittstelle des PCs
die kurze Pause.

Gruss Rafi

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.