mikrocontroller.net

Forum: PC-Programmierung LPT1 in Byte-Modus setzten


Autor: Steffen Meier (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi.
Ich muss für ein weiteres Programm mein LPT1-Port in den Byte-Modus
setzten, damit ich Daten einlesen und wegschicken kann.

In meinem Bios kann ich den Byte-Modus nicht direkt einstellen, sondern
lediglich ECP.

Ich hab jetzt folgendes versucht:

1.)Von windowsXP ab in die DosBOX
2.)debug <-
3.)(Datenleitungen als Ausgang)
   -o 378,0F //Datenleitungen mit Wert laden
   -o 37F,32 //Datenleitungen als Eingang setzen
   -i 378    //Auslesen der Datenleitungen
 F0     //Wert wurde also nicht übernommen

Autor: Maik Geßner (speedi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Steffen,

habe jetzt das Änliche Problem mit der I²C Schnittstelle unter Xp.

Wenn ich was neues Habe melde ich mich wieder

MFG
Maik Geßner

Autor: TravelRec. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn Du die Datenleitungen auf Eingabe schaltest, liest Du die
physikalischen Pegel an den Leitungen. Wenn keine 1-Pegel anliegen (von
außen!) kannst Du auch nur 0 lesen. Oder habe ich da ´was übersehen? Ein
Bekannter hat mir (Nichtprogrammierer) ein Windows-Programm geschrieben,
das genau so funktioniert. Unter DOS und Pascal (selbst probiert)
funktionierte es auch. Es gibt allerdings auch ECP-Schnittstellen, die
sich nicht davon überzeugen lassen, voll bidirektional zu arbeiten
(manche Laptops z.B.). Lege doch mal über einen Schutzwiderstand von
1kOhm 5V an einen der Datenpins und gucke, was ´reinkommt.

Autor: Steffen Meier (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also die Sache mit dem Widerstand hab ich schon probiert.
-So ein Programm das mir da was anzeigen sollte, hab ich auch.  Nachdem
das aber schon nicht geklappt hat, dachte ich mir ich probier mal das
ganze ohne Programm um die Fehlerwahrscheinlichkeit zu minimieren.

Naja, und dann bin ich bei den 3 Befehlen gelandet die ich oben
geschrieben habe. (-noch kleiner geht´s wohl nicht :))


Ps.: Schönes Wochenende


MFG Steffen

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

Bewertung
0 lesenswert
nicht lesenswert
Ein Grund, warum das ganze nicht funktioniert, dürfte darin zu finden
sein, daß DOS-Programme unter Windows NT (ja, XP ist auch NT) keine
direkten Hardwarezugriffe durchführen können.
Diese werden teilweise von virtualisierter Hardware abgefangen, so
verhält es sich bei den seriellen Schnittstellen und dem Parallelport,
und teilweise "verpuffen" sie völlig wirkungslos.

Das lässt sich mit Tricks umgehen, mit einem Treiber namens giveio.sys
kann die NT-eigene Hardwarezugriffsüberwachung deaktiviert werden, so
daß auch DOS-Programme direkte Hardwarezugriffe durchführen können.
Das sollte man aber nur mit Hardware machen, die keine Interrupts
auslöst, da die nicht von DOS-Programmen ausgewertet werden können und
zu "interessanten" Reaktionen des Betriebssystemes führen dürften.

Autor: TravelRec. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, das stimmt natürlich, ich vergaß das zu erwähnen, daß im Hintergrund
ein virtueller Porttreiber läuft (zlportio.sys) der die Zugriffe unter
2000 und XP ermöglicht. Im eigenliche Programm steht aber nicht viel
anderes als im oben genannten Code.

Autor: Steffen Meier (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie läuft das mit dem Treiber (giveio.sys) genau ab?

Wie kann ich die wenn ich sie auf der Paltte habe "laden", und wie
lange ist die dann aktiv? So lange ich die Dos-Box offen habe?

Fragen über Fragen, bin aber halt noch blutiger Anfänger. "noch"

MFG

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

Bewertung
0 lesenswert
nicht lesenswert
Der Treiber muss installiert sein, näheres dazu hier:
http://home.snafu.de/mgrafe/treiber.htm

Damit der Treiber auch für die DOS-VDM aktiv wird, muss -aus DOS
heraus- ein Dateizugriff stattfinden;

  fopen("\\\\.\\giveio", "r");

sollte genügen.

Autor: Rolf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Parallelport hat als Modi SPP, ECP und EPP. Was davon soll der
Byte-Modus sein?
Aufgrund der linearen Addressierung macht man beim Parallelport häufig
nur 32-Bit-Zugriffe, mit denen man alle (3) Register des SPP (Standard
Parallel Port) liest/schreibt, da Port-Zugriffe langsam sind und das
Zerlegen/Zusammensetzen der Bitfelder von der CPU sehr schnell geht.

Autor: TravelRec. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bytemodus ist erweiterter SPP, also PS2 - bidirektional.

Autor: Rolf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Modus? Das ist doch nur ein Bit (BIT5) im Konfigurations-Register. Das
nun Modus zu nennen ist übertrieben.
Und den SPP hat man auch dann noch, wenn man ECP oder EPP einstellt,
weil die Erweiterungen sind, die bei höheren I/O-Ports sind; man
braucht eigentlich nichts einzustellen, zumindest wenn man ohne
Interrupts auskommt.

Autor: TravelRec. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab´s nicht so genannt! In diversen Beschreibungen ist davon aber
immer mal wieder die Rede. Ansonsten hast Du natürlich Recht.

Autor: Sven (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Byte Modus ist normalerweise SPP mit der Umschaltmöglichkeit der
Datenleitungen als Eingänge. Dabei werden nur die 3 Standardregister
zur Datensteuerung benutzt. Bei EPP und ECP kommen weitere Register
dazu. Wichtig ist im Bytemodus ein Bit im Control-Register zum
Umschalten der Ausgangsleitungen zu Eingangsleitungen umzusetzen.

Giveio.sys ist ideal zum totschlagen des Schutzes der IO-Ports unter
NT4 bis WinXP. Gezielter auf den LPT-Port kann man mit speziellen
Treibern wie unter www.lpt-driver.com zugreifen. Da kann man dann auch
den geregelten Zugriff auf den LPT-Port steuern. Falls gerade gedruckt
wird, bekommt man eine Information - falls man selbst gerade auf dem
LPT-Port ist, wartet der Drucker ...

Sven

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sven schrieb:
....
..
Wichtig ist im Bytemodus ein Bit im Control-Register zum
Umschalten der Ausgangsleitungen zu Eingangsleitungen umzusetzen.
...


Und welches Bit ist das nun genau, ich denke es ist das Fünfte, aber
das funktioniert bei mir irgendwie nich :(

Autor: Rolf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es kann an der Bios-Einstellung liegen. Beim Standard-Parallel-Port ist
der Datenport nur Ausgang; bei den anderen Modi auch Eingang.

Hier eine Übersicht zum Parallelport:

http://www.linux-magazin.de/Artikel/ausgabe/1999/1...

Autor: Christian Engelhardt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe soweit eigentlich alles beachtet, aber bei mir will es einfach
nicht. Ich kann 0X378 auslesen und einmal beschreiben. Dieser Wert
bleibt dann da tapfer drin, bis zum bitteren Ende, egal was ich mach...
und an der Schnittstelle ändert sich kein Pegel.
Folgende Header hab ich drin:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <unistd.h>
#include <dir.h>

Fehlt da was?
ICh wäre für Tipps sehr dankbar, da ich schon ein paar TAge über dem
Problem sitze.

Mfg CE

Autor: Rolf F. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
BIT5 vom Kontroll-Register gibt die Richtung vor; will man Schreiben
muss es auf 0 sein; will man Lesen muss es auf 1 sein und zwar vorher.
Das steht auch unter dem letzten Link.
Es gibt keine Hardware, die sowas automatisch macht.

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.