Forum: PC-Programmierung Terminalprogramm für "ungerade" Baudraten?


von Sebastian (Gast)


Lesenswert?

Hi,

kennt jemand von euch ein Programm, das auch mit unüblichen (oder frei
definierbaren) Baudraten umgehen kann? Ich muss möglichst ganzzahlig
durch 625000 teilbare Baudraten verwenden (also 625000, 312500, 208333,
156250 etc.). Leider kann kein mir bekanntes Terminalprogramm diese
Werte. Und die nächst näheren sind schon zu weit weg; ich bekomme
aufgrund des Fehlers keine zuverlässige Kommunikation hin. :-(

Grüße, Sebastian

von Rufus T. Firefly (Gast)


Lesenswert?

Das liegt nicht am Terminalprogramm, sondern an der Hardware.
Die serielle Schnittstelle im PC (ein 8250 oder 16550) wird mit 1.8432
MHz getaktet - und daraus lassen sich nur die Standardbaudraten
ableiten.

Du wirst nicht umhinkommen, andere Hardware zu verwenden -
beispielsweise einen serielle Schnittstellenkarte, bei der der Quarz
durch einen anderen (mit geeigneter* Frequenz) ersetzt ist oder aber
eine aufwendigere Serielle Schnittstelle, bei der der
Baudratengenerator am Standardtreiber vorbei beeinflusst werden kann.

Höchste mit 1.8432 MHz erzielbare Baudrate ist 115200 - Teiler ist also
16.

Demzufolge muss der Quarz (besser: Oszillator) durch einen 625000 * 16
= 10 MHz-Quarz ersetzt werden.

Dann stellst Du im Terminalprogramm zwar immer noch 115200 ein, das
Resultat sind dann aber 625000, entsprechend
57600 = 321500
38400 = 208333

etc.

Bei derartig überhöhten Baudraten sollte der verwendete PC aufgrund der
hohen Interruptlast nicht gerade ein 286er sein ... auch scheint der
Einsatz von 16550 statt 8250 deutlich angeraten (aufgrund der
eingebauten FIFOs).

Alles klar?

von Sebastian (Gast)


Lesenswert?

Jep, alles klar. Ich dachte, der PC könnte sowas irgendwie korrigieren.
Ich kenne das nur vom MSP430, der bei seinem USART neben dem Divider
noch einen Reload-Wert bietet. So korrigiert der den Fehler, der dabei
entsteht, wenn man zu unpassende Werte wählt. D.h., man kann noch
gewisse "unsinnvolle" Werte einstellen, indem man den Reload-Wert
passend einstellt, der dann nach jedem x-ten Takt eine kurze
Veränderung der Baudrate vornimmt, um so wieder Synchronität
herzustellen.

von Dierk (Gast)


Lesenswert?

Vielleicht könnte man die Schnittstelle nach jedem Byte neu
synchronisieren, und hoffen, das der Fehler innerhalb eines Bytes nicht
größer ist als die Zeit zwischen einzelnen Bits

von Rufus T. Firefly (Gast)


Lesenswert?

Lest euch mal ein Datenblatt des 8250 oder 16550 durch.

Eine "Korrektur" ist nicht möglich; eine Neusynchronisation nach
jedem empfangenen Byte ist sowieso Bestandteil der asynchronen
seriellen Schnittstelle - nur sind hier die eingangs erwähnten
Baudraten deutlich anders als die von der Hardware erzeugbaren, so daß
alles Synchronisieren nicht hilft.

von KoF (Gast)


Lesenswert?

hier habe ich ein wunderbares terminalprog gefunden :-)

http://bray.velenje.cx/avr/terminal/

von Rufus T. Firefly (Gast)


Lesenswert?

Das mag zwar ein "wunderbares" Terminalprogramm sein, das hier
ursprünglich angesprochene Problem kann es jedoch auch nicht lösen -
wie sollte es das auch?

Außerdem sehe ich auf einen Blick eine bedenkliche Einschränkung - aus
welchen Gründen auch immer fand der Programmierer es erforderlich, die
verwendbaren seriellen Schnittstellen durch sieben (warum ausgerechnet
sieben?) Radiobuttons auswählbar zu machen - ganz abgesehen davon, daß
so immer schön viel Platz auf dem Bildschirm mit völlig uninteressanten
Informationen zugedeckt wird, kann man so mit Schnittstellen ab COM8
nicht mehr arbeiten.
So "große" Schnittstellennummern können im realen Leben schneller
auftreten, als man so gemeinhin annimmt. Da ist nur eine ISDN-Karte mit
Unterstützung virtueller Modems erforderlich, schon können COM3-COM6
belegt sein. Dann vielleicht noch eine Bluetooth-Hardware, die man in
manchen PCs ja gleich ab Werk erhält ...

Nee, das Programm ist nur ein wunderbares Beispiel, wie man User
Interfaces eben nicht machen sollte.

von Alex (Gast)


Lesenswert?

Worüber sich trefflich streiten lässt, solange du kein Beispiel deiner
Programmierkunst zum besten gibst ...

Zum Thema mehr COM-Ports: Der Autor hat auf seiner Seite eine
Möglichkeit zum Voten geschaffen. Dort ist auch das von dir bemängelte
mit aufgeführt. Also: Geh voten :-)

Falls du ein bessere Terminal-Programm (Freeware) kennst, dann immer
her mit dem Namen.

Gruß, Alex

von René König (Gast)


Lesenswert?

"Worüber sich trefflich streiten lässt, "

Du hälst diese Einschränkung also für sinnvoll? Na, ich weiß nicht ...

von Alex (Gast)


Lesenswert?

"schön viel Platz auf dem Bildschirm mit völlig uninteressanten
Informationen zugedeckt wird"

von Rufus T. Firefly (Gast)


Angehängte Dateien:

Lesenswert?

Ja. Die Konfiguration der seriellen Schnittstelle macht man einmal, oder
so oft, bis sie stimmt. Danach interessiert sie nicht mehr und muss vom
Terminalprogramm nicht permanent dargestellt werden - jedenfalls nicht
so, daß sie genausoviel Platz wegnimmt wie das eigentliche
Terminalfenster.
Das Konzept, für derlei Konfigurationsoptionen einen Dialog zu
verwenden, ist nicht gänzlich unbekannt und wird von ernstzunehmender
Sotware auch genutzt.
Für die Auswahl der Schnittstellen bietet sich eine Drop-Down-Combobox
an, die belegt immer gleich viel Platz, egal, wieviele Schnittstellen
da nun drin genannt werden.
Das gleiche Konzept dient sich auch für die anderen Parameter wie
Baudrate etc. an.

Anbei ein Screenshot des Konfigurationsdialoges von Teraterm - ein
übrigens im Sourcecode vorliegendes freies Terminalprogramm.
Ja, mir ist klar, daß das etliche der Features von Bray nicht aufweist
- aber das Grundkonzept, wie ein Programm auszusehen hat, wird hier
deutlich besser umgesetzt.
Es gibt schließlich auch für Windows "User Interface Guidelines".

(Der Screenshot verrät, daß auch Teraterm sich nicht daran hält; in
Dialogen ist seit Windows 95 eine andere nichtfette Schrift zu
verwenden)

Ich finde übrigens auch die Standardkonfiguration von MS Word zum
[zensiert], die 30% des Bildschirms mit tollen Toolbars zudeckt, die
lauter Funktionen zur Verfügung stellen, die eh' keiner braucht.
(Word XP und 2K3 scheinen da besser geworden zu sein).

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.