mikrocontroller.net

Forum: PC-Programmierung RS232 - Modem Status Register lesen


Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn ich das MSR Register auslese, bekomme ich immer nur eine 1 
geliefert.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Verwendest Du ein Betriebssystem?

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja ich verwende ein Betriebssystem.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Martin (Gast)
Datum:

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

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast Du derzeit Schnupfen oder warum muss man Dir alles aus der Nase 
ziehen?

Autor: Martin (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Warum denn?

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

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Di Li (dili)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: *.* (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Di Li (dili)
Datum:

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

Autor: .:.:.:.:.:. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Di Li (dili)
Datum:

Bewertung
0 lesenswert
nicht 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"?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.