Forum: PC-Programmierung RS232 - Modem Status Register lesen


von Martin (Gast)


Lesenswert?

Auf dem Embedded-PC befindet sich ein UART16650. Über diesen kann ich 
Daten von der RS232 Schnittstelle senden und empfangen. Zusätzlich habe 
ich noch ein externes TTL Signal das ich mit einem Pegelwandler in RS232 
Peger umwandle.Dieses umgewandeltet Signal gebe ich dann auf die RS232 
Schnittstelle vom Embedded PC drauf. Dazu verwende ich den Pin6 (DSR - 
Betriebsbereit) von dem 9poligen SUBD Anschluss.
Damit ich den Pin6 auslesen kann, muss ich vom UART das Register MSR 
verwenden (Basisadresse + 6) oder?

von Martin (Gast)


Lesenswert?

Wenn ich das MSR Register auslese, bekomme ich immer nur eine 1 
geliefert.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Verwendest Du ein Betriebssystem?

von Martin (Gast)


Lesenswert?

Ja ich verwende ein Betriebssystem.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Und dieses (von Dir praktischerweise nicht genannte) Betriebssystem 
bietet nicht zufälligerweise einen Devicetreiber, der Zugriffe auf die 
serielle Schnittstelle kapselt? Und die für Dich interessante 
Statusinformation liefern kann?

von Martin (Gast)


Lesenswert?

Das wurde alles schnon in der Software implementiert.
Für die serielle Schnittstelle wurde ien Interrupt Handler aufgesetzt.
In diesem prüfe ja das Interrupt-Identifikationsregister.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Du hast also unter Deinem (nach wie vor ungenannten Betriebssystem) 
einen eigenen Interrupthandler für die serielle Schnittstelle 
geschrieben.

Wann soll ein Interrupt ausgelöst werden? Nur bei Senden/Empfangen von 
Daten oder auch bei "Gewackel" an der Handshake-Leitung?

Wie ist der 16550 initialisiert? Wird der Fifo verwendet? Was wird in 
das IER (Basis + 1) geschrieben?

Welche Bits im MSR (Basis + 6) wertest Du aus?

Wird im Interrupthandler das IIR ausgewertet, wenn ja, wie?

von Martin (Gast)


Lesenswert?

Ich habe den Pin9 von dem RS232 SUBD Anschluss verwendet. Da 
funktioniert es.
(pin9 = ring identicator)

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Hast Du derzeit Schnupfen oder warum muss man Dir alles aus der Nase 
ziehen?

von Martin (Gast)


Angehängte Dateien:

Lesenswert?

Warum denn?

Das Ausgangssignal vom Pegelwandler (blaue Kurve) schwingt schon 
erheblich.
Sollte man dies grundsätzlich vermeiden? Welche Kondensatoren sollte man 
überhaupt verwenden?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Möchtest Du eigentlich, daß Dir geholfen wird oder wie stellst Du Dir 
das im einzelnen vor?

Um Dein Problem einzugrenzen, habe ich Dir einige Fragen gestellt. Davon 
hast Du exakt eine beantwortet, und selbst das nicht ernsthaft (Frage 
nach Betriebssystem).

Willst Du Dir nicht helfen lassen oder verstehst Du die Fragen nicht?

von Di L. (dili)


Lesenswert?

Hallo,
ich habe auch ein (Programmier-)Problem mit direktem 
Port-Adressenzugriff unter Windows XP: ich installiere einen 
Systemdienst für direkten Hardwarezugriff ("zlportio" unter Delphi 6).
Der Zugriff auf Register des LPT-Ports (Drucker, ab 0x378) funktioniert 
damit perfekt.
Der Register-Zugriff bei der seriellen Schnittstelle geht dagegen gar 
nicht (ab 0x3F8 bzw. 0x2F8). Als würde der Zugriff ins Leere gehen: 
gelesene Werte immer 255. Die Adressen werden im Gerätemanager korrekt 
angezeigt.
Hinweis: auf anderen Rechnern funktioniert der Zugriff auf COM1,2 
teilweise ja, teilweise nein. Was könnte der Grund und die Lösung des 
Problems sein?

Gruß
DiLi

von *.* (Gast)


Lesenswert?

Hast Du den COM-Port im Gerätemanager deaktiviert? Es scheint da 
Chipsätze zu geben, die in diesem Fall auch die Basisadressen der 
Hardware wegschalten.

von Di L. (dili)


Lesenswert?

nein, alle COM-Ports sind aktiv und können von anderen Programmen auch 
verwendet werden!

von .:.:.:.:.:. (Gast)


Lesenswert?

Hast du geschaut welche Adressen im Gerätemanager gewählt wurden?
Wenn diese nicht mit den gewählten übereinstimmen, dann liest man ins 
leere.

Auch wenn man "etwas" ältere Steckkarten verwendet könnte es Probleme 
geben, da da die Adressen unter anderem mit Jumpern eingestellt wird.

von Di L. (dili)


Lesenswert?

nein, im Gerätemanager ist alles klar; die dort angegebenen Portadressen 
spreche ich mit meinem Programm an. Der Rechner ist ziemlich neu. Auf 
dem alten Rechner hat es geklappt.
Ob das neue BIOS da irgend was "verbiegt"?

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.