LPT-Port: 8 Datenbits LESEN im ECP/EPP-Modus!?

Im Unterforum Projekte im Selbstbau - Beschreibung: Selbstbau von Elektronik und Elektro

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 28 12 2025  18:31:39      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Oszilloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Projekte im Selbstbau        Projekte im Selbstbau : Selbstbau von Elektronik und Elektro

Gehe zu Seite ( 1 | 2 Nächste Seite )      


Autor
LPT-Port: 8 Datenbits LESEN im ECP/EPP-Modus!?

    







BID = 35830

DanielM

Gerade angekommen


Beiträge: 10
 

  


Hallo Elektronik-Fans!

Ich muss für ein kleines FH-Projekt 8 Werte in den PC einlesen. Dies möchte ich über den Parallen Port (LPT) des PC realsieren. Die 8 Datenbits schreiben funktioniert einwandfrei, das LESEN jedoch nicht.

Jetzt habe ich schon herausgefunden, dass man nur mit neuen LPT-Ports (ECP/EPP) die 8 Bits auch LESEN kann und nicht nur schreiben. Also habe ich kurzerhand in meinem Bios den Modus auf ECP/EPP geändert.

Leider liest mein Testprogramm aber immernoch einfach 0 und nicht z.B. eine 1, wenn ich +5V an Pin 2 von dem Sub-D-Stecker lege. Wo könnte mein Fehler liegen?

Danke für Eure Tipps!

BID = 35833

Jornbyte

Moderator



Beiträge: 7349

 

  

Unter WinNT, W2k und Xp ist das Lesen und Schreiben nicht so ohne weiteres möglich. Verrate uns mal dein verwendetes BS. Auch die Proggisprache währe Aufschlussreich.

_________________
mfg Jornbyte

Es handelt sich bei dem Tipp nicht um eine Rechtsverbindliche Auskunft und
wer Tippfehler findet, kann sie behalten.

BID = 35854

DanielM

Gerade angekommen


Beiträge: 10


Zitat :
Jornbyte hat am 21 Okt 2003 21:11 geschrieben :

Unter WinNT, W2k und Xp ist das Lesen und Schreiben nicht so ohne weiteres möglich. Verrate uns mal dein verwendetes BS. Auch die Proggisprache währe Aufschlussreich.

Ich verwende Windoze XP und als Entwicklungsumgebung C#. Ausserdem habe ich eine Lizenz von NTPort.dll (http://www.zealsoft.com/ntport) über die ich entsprechende direkte input und output-Befehle auch unter XP habe.

Von daher liegt es vermutlich nicht an der Software, sondern an der Hardware, deshalb habe ich auch dieses Elektronikforum ausgewählt und keine Programmer-Newsgroup.
Daher vielleicht noch mal zu meiner Hardware: Ich habe im Bios ECP/EPP eingestellt. Und lege um eine 1 an dem jeweiligen Data-Bit zu empfangen, den +Pohl ab Pin2 (bis Pin9) und die Masse meiner 5V Stromquelle an die Pins 19-22 (sind wohl die Massen von Data1 bis Data8).

Aber wie gesagt: ich bekomme immer nur den Wert 0 beim Einlesen von der Adresse 378 (mein LPT-Port). 378 ist richtig, denn wenn ich an meine oben genannten Pins LEDs anlege und z.B. out(1) sende, leuchtet meine LED an Pin2 (Data1).

Please help - ich verzweifele hier noch...

BID = 35945

perl

Ehrenmitglied



Beiträge: 11110,1
Wohnort: Rheinbach


Zitat :
Und lege um eine 1 an dem jeweiligen Data-Bit zu empfangen, den +Pohl ab Pin2 (bis Pin9) und die Masse meiner 5V Stromquelle an die Pins 19-22 (sind wohl die Massen von Data1 bis Data8).


1) Du solltest keinesfalls die Portpins direkt an Masse oder +5V legen, da durch diesen Kurzschluß die Transistoren im I/O-Chip zerstört werden können.
270-Ohm Widerstände begrenzen den Strom, der in den Port hinein- oder herausfließt auf einen ungefährlichen Wert.

2) SPP (steht auch in EPP zur Verfügung) ist für dich die richtige Betriebsart.

3) Zum Basisadresse 378h gehören ein (Read Only) Statusregister auf 379h und ein (Read Write) Steuerregister 37ah.

Die Bits im Statusregister, mit ihnen kannst Du die Statusleitungen des LPT abfragen:
7: /BUSY: Inverse of Printer Busy Signal, A logic "0" means that the printer is busy and cannot accept another character. A Logic "1" means that is ready to accept the next character.

6: /ACK: Printer Acknowledge, a logic "0" means that the printer has received a character and is ready to accept another. A logic "1" means that it is still processing the last character.

5: PE. Paper End, a logic "1" indicates a paper end.

4: SLCT. Printer selected, a logic "1" means that the printer is online.

3: /ERR. Printer Error Signal. A Logic "0" means an Error has been detected.
2:reserved
1:reserved
0:Timeout(nur EPP mode)


Im Control Register 37ah findest Du das PPDIR-Bit, mit dem Du den Port 378h als Eingang oder Ausgang umschalten kannst , und noch ein paar Signale die als Ausgänge am LPT landen:
7: reserved (1)
6: reserved (1)
5: PDDIR: Data port direction control, this bit determines the direction of the data port. Set this bit to "0 to output the data port to PD bus and "1" to input from PD-bus.
4: IRQE: Interrupt request enable, set this bit "1" to enable interrupt requests from the parallel port to the host and "0" to disable. An interrupt request ist generated by a "0" to "1" transition of the /ACK signal.
3: SLIN: Inverse of /SLIN pin, setting this bit "1" selects the printer.
2: INIT: Initiate printer, setting this bit "0" initializes the printer.
1: AFD: Inverse of the /AFD-pin, setting theis bit "1" causes the printer to automatically fees after each line is printed.
0: STB: Inverse of the /STB-pin, this pin controls the data strobe to the printer.

Die Betriebsarten EPP und ECP kann ich Dir nicht ohne weiteres empfehlen, da Du dazu tiefer in die Hardwareprogrammierung einsteigen müßtest. Falls Dich Details interessieren, findest Du sie in den Datenblättern der Super I/O Chips (obiges ist vom UM8663A).
Diese Datenblätter sind aber etwas voluminös weil diese Chips auch noch die seriellen Schnittstellen, den Floppy-Controller und das Interface für die IDE-Laufwerke beinhalten



_________________
Haftungsausschluß:



Bei obigem Beitrag handelt es sich um meine private Meinung.



Rechtsansprüche dürfen aus deren Anwendung nicht abgeleitet werden.



Besonders VDE0100; VDE0550/0551; VDE0700; VDE0711; VDE0860 beachten !

BID = 36007

2SJ200

Schreibmaschine

Beiträge: 1942
Wohnort: Österreich

frage: der kuzschlusstrom einer Centronic port datenleitung liegt ja teils bei satten 100mA - wenn man da mit 270Ohm nach masse geht, ob des die datenleitung beeindruckt?

BID = 36013

perl

Ehrenmitglied



Beiträge: 11110,1
Wohnort: Rheinbach

Was soll diese unsinnige Frage?
Es geht nicht darum den Chip zu beeindrucken oder die Bonddrähtchen zu schmelzen, sondern die Treibertransistoren abzuschalten, damit man den anliegenden Pegel lesen kann.

_________________
Haftungsausschluß:



Bei obigem Beitrag handelt es sich um meine private Meinung.



Rechtsansprüche dürfen aus deren Anwendung nicht abgeleitet werden.



Besonders VDE0100; VDE0550/0551; VDE0700; VDE0711; VDE0860 beachten !

BID = 36015

2SJ200

Schreibmaschine

Beiträge: 1942
Wohnort: Österreich

ich bin davon ausgegangen dass beim LPT port die ausgänge alle auf HIGH geschaltet werden und dann von aussen gegn masse gezogen werden (per OC zB) und des wird dann eingelesen - da wärs aber fraglich ob du mit 270Ohm die leitung nach masse ziehen kannst, darum die frage - die is nicht ½ so unsinnig wie du meinst...

BID = 36073

DanielM

Gerade angekommen


Beiträge: 10


Zitat :

perl schrieb am 2003-10-23 02:11
Im Control Register 37ah findest Du das PPDIR-Bit, mit dem Du den Port 378h als Eingang oder Ausgang umschalten kannst

Hab jetzt mal 32 (für Bit 5, dem PPDIR-Bit) an 37a geschickt. Die LEDs die ich an meine Pins zur Kontrolle gelötet haben leuchten jetzt alle!? Zwar nicht so stark, als wenn ich die entsprechenden Bits bei 378 auf 1 setze, aber sie leuchten. Ist das nicht seltsam? Ich meine laut deinem Tipp, schaltet man über Bit 5 bei 37a ja nur von schreiben auf lesen?

Wenn ich (jetzt mit 330 Ohm Widerstand davor - hatte keine 270 Ohm) nun an die 8 Datenbits 5+ Volt lege leuchten die LEDs zwar heller, aber über 378 lese ich trotzdem nur 0xFF.

Ich bin schon wieder am verzweifeln
Muss das zu nächsten Dienstag am laufen haben... :-(

BID = 36093

perl

Ehrenmitglied



Beiträge: 11110,1
Wohnort: Rheinbach


Zitat :
war nicht so stark, als wenn ich die entsprechenden Bits bei 378 auf 1 setze, aber sie leuchten. Ist das nicht seltsam?

Prima.
Der geringe Strom, der die LEDs jetzt zum Leuchten bringt, kommt aus den Pullup-Widerständen, die die Inputpins auf "1" bringen sollen, wenn nichts angeschlossen ist.
Und das ist auch die "1", die Du liest.

Der Eingang muß aktiv auf Masse gezogen werden (aber bitte nur über den Schutzwiderstand), damit Du die "0" lesen kannst.

Übrigens können Dir die LEDs u.U. den High-Pegel verderben. Daran solltest Du denken, wenn Du mal keine "1" findest, wo Du sie erwartest.

_________________
Haftungsausschluß:



Bei obigem Beitrag handelt es sich um meine private Meinung.



Rechtsansprüche dürfen aus deren Anwendung nicht abgeleitet werden.



Besonders VDE0100; VDE0550/0551; VDE0700; VDE0711; VDE0860 beachten !

BID = 36100

DanielM

Gerade angekommen


Beiträge: 10


Zitat :
perl hat am 24 Okt 2003 15:08 geschrieben :

Der Eingang muß aktiv auf Masse gezogen werden (aber bitte nur über den Schutzwiderstand), damit Du die "0" lesen kannst.

Kannst du das bitte für einen Dummy erklären? Hab ich nämlich jetzt nicht verstanden. Wäre nett.


Zitat :

Übrigens können Dir die LEDs u.U. den High-Pegel verderben. Daran solltest Du denken, wenn Du mal keine "1" findest, wo Du sie erwartest.

Kann man da nichts gegen tun, weil es waere schon nett, wenn mir die LEDs visualisieren könnten, ob eine 1 oder 0 an dem jeweiligen Pin anliegt.
Aber die LEDs sind ersteinmal nicht so wichtig. Wichtiger ist obiges...

BID = 36154

perl

Ehrenmitglied



Beiträge: 11110,1
Wohnort: Rheinbach

In umgekehrter Reihenfolge:


Zitat :
Kann man da nichts gegen tun, weil es waere schon nett, wenn mir die LEDs visualisieren könnten, ob eine 1 oder 0 an dem jeweiligen Pin anliegt.

Am einfachsten verwendest Du grüne LEDs, die haben eine höhere Durchlaßspannung als rote.
Oder Du schaltest jeweils zwei rote LEDs hintereinander. Dann werden die zwar nicht ganz so hell leuchten, aber der Logikpegel ist dann auf jeden Fall ok.


Zitat :
Kannst du das bitte für einen Dummy erklären? Hab ich nämlich jetzt nicht verstanden. Wäre nett.


Schalte den Eingabeschalter mit einem Bein an Masse, mit dem anderen Bein über 220R an den LPT-Eingang.
Das sollte schon reichen, um mit dem geschlossenen Scahlter eine 0 eingeben zu könnnen.
Normalerweise benötigst Du nun noch einen Widerstand von etwa 4k7 bis 20k vom Schalter nach +5V, damit sich ein gesunder High-Pegel einstellen kann, aber dieser Widerstand scheint bei Deinem LPT-Port schon eingebaut zu sein.

Dann kontrollierst Du dein Werk mit einem Voltmeter, indem Du die Spannung zwischen Portpin und Masse überprüfst.
Den Port programmierst Du dazu als Eingang.
Wenn der Schalter geschlossen ist (0), muß die Spannung kleiner als 0,8V sein. Wenn der Schalter geöffnet ist (1), muß die Spannung mindestens 2V betragen.
Zwischn 0,8V und 2V liegt eine Grauzone, bei der man vorher nicht weiß, ob der Chip den Spannungswert als 0 oder als 1 ansieht.

Wenn Du den Port als Ausgang verwendest müssen die Schalter natürlich offen sein, sonst würden sie ja als Kurzchluß wirken.
Damit durch diesen Kurzschluß im Falle eines Falles dabei trotzdem nix kaputtgeht, habe ich die 220R Widerstände (330R sollten auch gehen) vorgesehen, die den Kurzschlußstrom begrenzen.



_________________
Haftungsausschluß:



Bei obigem Beitrag handelt es sich um meine private Meinung.



Rechtsansprüche dürfen aus deren Anwendung nicht abgeleitet werden.



Besonders VDE0100; VDE0550/0551; VDE0700; VDE0711; VDE0860 beachten !

BID = 36189

Jornbyte

Moderator



Beiträge: 7349

Und so sieht es als Schaltung aus.

Hochgeladenes Bild : portpin.gif

_________________
mfg Jornbyte

Es handelt sich bei dem Tipp nicht um eine Rechtsverbindliche Auskunft und
wer Tippfehler findet, kann sie behalten.

BID = 36192

perl

Ehrenmitglied



Beiträge: 11110,1
Wohnort: Rheinbach

Genau.
Danke, Jörgen.
Womit hast Du das kleine Bildchen gemacht ? Ich konnte mich nicht überwinden das große Malprogramm anzuwerfen.

_________________
Haftungsausschluß:



Bei obigem Beitrag handelt es sich um meine private Meinung.



Rechtsansprüche dürfen aus deren Anwendung nicht abgeleitet werden.



Besonders VDE0100; VDE0550/0551; VDE0700; VDE0711; VDE0860 beachten !

BID = 36206

ET-Profi

Neu hier



Beiträge: 30
Wohnort: Bückeburg
ICQ Status  

das bild sieht sehr nach eagle aus ...

gibt unter www.cadsoft.de

BID = 36222

perl

Ehrenmitglied



Beiträge: 11110,1
Wohnort: Rheinbach

Hab ich u.a. selbst. Ich meinte auch nicht das Layoutprogramm, sondern den Grabber oder was immer die paar Pixel extrahiert/konvertiert hat.


      Nächste Seite
Gehe zu Seite ( 1 | 2 Nächste Seite )
Zurück zur Seite 1 im Unterforum          Vorheriges Thema Nächstes Thema 


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 17 Beiträge im Durchschnitt pro Tag       heute wurden bisher 7 Beiträge verfasst
© x sparkkelsputz        Besucher : 187992852   Heute : 12082    Gestern : 11123    Online : 391        28.12.2025    18:31
7 Besucher in den letzten 60 Sekunden        alle 8.57 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.0559921264648