Forum: PC-Programmierung UART Register ansprechen (DOS)


von tastendrücker (Gast)


Lesenswert?

Hallo,

ich suche ein Tool, mit dem unter DOS die Register des UART
angesprochen werden können. peziell geht es dabei um das
Ein-/Ausschalten des FIFO's. Schöner wäre aber, wenn alle Register
ausgelesen/gesetzt werden könnten.

TD

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

debug.com

von A.K. (Gast)


Lesenswert?

Und jede beliebige DOS-Programmiersprache, einschliesslich
QBasic/QuickBasic.

von tastendrücker (Gast)


Lesenswert?

> Und jede beliebige DOS-Programmiersprache, einschliesslich
> QBasic/QuickBasic.

Eine Programmiersprache sehe ich nicht als Tool, wie ich es meine, an.
Das ich alles mögliche selbst Programmieren kann, weiss ich auch. Da
aber eine schnelle Lösungsfindung gefragt ist, wäre ein fertiges Tool,
dass ich in 3 Minuten (Idealfall ;) runterlade und starte,  besser, als
eine Eigenprogrammierung, die (hier) einige Stunden dauern kann.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Welchen Sinn soll es aber haben, einzelne Bits in den Registern der UART
zu befummeln, wenn jedes danach gestartete DOS-Programm die UART eh neu
initialisiert?
Außerdem sind die FIFOs der 16550 unter DOS sowieso inaktiv, es sei
denn, ein Programm aktiviert sie entsprechend.
Und Programme, die nichts vom 16550 verstehen (die meisten
DOS-Programme also), sondern eine 8250 erwarten, die könnten mit den im
FIFO-Betrieb auftretenden Bedingungen eh nichts anfangen (ein Interrupt
für mehr als ein empfangenes Zeichen ...).

Oder geht es Dir gar nicht um DOS, sondern Du meinst die
Windows-"Eingabeaufforderung", und Du möchtest die FIFO-Einstellungen
des Windows-Devicetreibers verändern?
Dafür bietet der Devicetreiber im Gerätemanager eine GUI, bei der nicht
nur die FIFOs abgeschaltet werden können, sondern sogar die
Triggerschwellen (bei aktivem FIFO) festgelegt werden können.

Was also genau hast Du vor?

von tastendrücker (Gast)


Lesenswert?

@Rufus
Danke für die Erläuterungen. Ein Kollege hat folgendes Problem (mit dem
ich mich nicht näher befasst habe):

Eine Programmiersoftware (DOS) verlangt laut Handbuch einen 8250 UART.
Wir haben aber nur Rechner mit 16550 (welche ja FIFOs haben). Auf all
diesen Rechnern funktioniert nun das Programm nicht richtig (Meldung:
"Programmierspannung liegt nicht an", obwohl diese am Gerät (SPS) zu
messen ist). Mein Kollege meint nun, es könne daran liegen, dass die
Software nicht mit dem FIFO klarkommt. Daher wollte er diesen vor
Programmstart deaktivieren.

Das die FIFOs unter DOS generell deaktiviert sind, wusste ich nicht.

Ich habe mich (wie schon erwähnt) noch nicht näher mit der Sache
befasst, meine aber, dass das Problem an anderer Stelle liegt.

TD

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Die 16550 ist nach Reset funktionskompatibel zur 8250.

Wenn die Software auf neueren PCs nicht funktioniert, wird das andere
Gründe haben:

a) kein DOS, sondern virtuelle DOS-Umgebung unter einem
Betriebssystem?

b) Rechner ist deutlich schneller als die, die noch mit 8250 bestückt
wurden, und Software ist so schlecht geschrieben, daß das Probleme
bereitet.

c) Verkabelung der seriellen Schnittstelle könnte fehlerhaft sein,
vielleicht wird ja ein "vergurkter" 9-zu-25-Adapter verwendet.

d) Die "alte" serielle Schnittstelle ist eine
Original-IBM-Schnittstellenkarte für einen IBM PC bzw. XT. Die
unterstützt nicht nur die einfache RS232-Betriebsart, sondern kann auch
als 20mA-Stromschleife konfiguriert werden (was dann auch andere Pins am
25poligen Stecker nutzt).
Das können neuere Schnittstellen mit 9poligem Stecker nicht.

Die 16550 wird in PCs seit der ersten Hälfte der 90er Jahre
standardmäßig verwendet, das dürfte Vermutungen über das Alter der
Software zulassen ...

Der erste Rechner, in dem ich der 16550 begegnete, war ein IBM PS/2
Modell 30/286, ein 10MHz-286er.
Mit dem hatte ich etwa 1990 zu tun.

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.