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
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?
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.
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
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.
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.
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
"Worüber sich trefflich streiten lässt, " Du hälst diese Einschränkung also für sinnvoll? Na, ich weiß nicht ...
"schön viel Platz auf dem Bildschirm mit völlig uninteressanten Informationen zugedeckt wird"
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.