Forum: PC Hard- und Software µC korrekt an LPT anschließen


von Sven S. (schwerminator)


Lesenswert?

Moin Moin!

Ich suche nun schon seit einiger Zeit, habe aber irgendwie noch nichts 
gefunden. Ich muss für eine spezielle Anwendung einen Mikrocontroller an 
den (veralteten) Parallel Port anschließen. Dabei möchte ich mich noch 
nicht auf den Modus (SPP, ECP, EPP) festlegen. Wie sieht die korrekte 
Beschaltung aus? Die Pegel der Mikrocontroller-Ports sind 5V, ebenso die 
Versorgungsspannung. Am einfachsten wären sicherlich Schutzwiderstände, 
doch ist das zuverlässig?

Gruß Sven

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Sven S. schrieb:
> Ich muss für eine spezielle Anwendung einen Mikrocontroller an
> den (veralteten) Parallel Port anschließen.

Nun, die "spezielle Anwendung" wird darüber entscheiden, wie Du den µC 
anschließen musst.
Wenn Du beispielsweise einen Drucker nachbilden willst, musst Du den µC 
so anschließen, daß Du eben die Centronics-Schnittstelle eines Druckers 
nachbilden kannst -- dann musst Du auf dem PC immerhin keine spezielle 
Software schreiben.
Willst Du den Parallelport hingegen als Frickelport nutzen (Bitbanging & 
Co.), musst Du Dich nach den Vorgaben der von Dir verwendeten 
Frickelportsoftware richten. Oder willst Du die auch selbst schreiben?

Also: Ohne daß Du was über die "spezielle Anwendung" verrätst, kann man 
Dir keine sinnvollen Ratschläge geben.
Geht es um die Übertragung von Daten nur in eine Richtung (aus dem PC 
zum µC, vom µC zum PC), in beide Richtungen, willst Du einen µC über 
seine ISP-Schnittstelle programmieren, willst Du ein 
"Wiggler"-JTAG-Interface nutzen, soll das ein "Dongle" werden?

von Sven S. (schwerminator)


Lesenswert?

Nun, das war wohl noch zu unspezifisch. Diesmal konkreter:

Der µC soll zwei LPTs bedienen, wobei die eine nur als Eingang, die 
andere nur als Ausgang dient. Im Wesentlichen werden nur die Datenbits 
verwendet (Bitbanging). Die Richtung PC->µC erscheint mir unkompliziert, 
da ich hier einfach die µC-Pins als Eingang konfiguriere und fertig. Die 
andere Richtung macht mir mehr sorgen, schließlich könnte es (durch 
einen Fehler) passieren, dass die Datenpins des PC noch als Ausgang 
geschaltet sind und es infolge dessen zu einem Kurzschluss kommen würde, 
wenn der µC versucht, die Datenpins zu treiben.

Gruß Sven

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Sven S. schrieb:
> Der µC soll zwei LPTs bedienen, wobei die eine nur als Eingang, die
> andere nur als Ausgang dient.

Das ist immer noch keine Beschreibung.

von Sven S. (schwerminator)


Lesenswert?

Was fehlt?

von Frank K. (fchk)


Lesenswert?

Sven S. schrieb:
> Nun, das war wohl noch zu unspezifisch. Diesmal konkreter:
>
> Der µC soll zwei LPTs bedienen, wobei die eine nur als Eingang, die
> andere nur als Ausgang dient. Im Wesentlichen werden nur die Datenbits
> verwendet (Bitbanging). Die Richtung PC->µC erscheint mir unkompliziert,
> da ich hier einfach die µC-Pins als Eingang konfiguriere und fertig. Die
> andere Richtung macht mir mehr sorgen, schließlich könnte es (durch
> einen Fehler) passieren, dass die Datenpins des PC noch als Ausgang
> geschaltet sind und es infolge dessen zu einem Kurzschluss kommen würde,
> wenn der µC versucht, die Datenpins zu treiben.

Wenn Du Dich nicht auf einen Modus festlegen willst, dann ist SPP der 
kleinste gemeinsame Nenner, und der erlaubt auf den Datenpins nur die 
Ausgaberichtung. Dir bleibt dann nur der Nibblemodus für den 
Datentransfer.

Der PC-Parallelport ist übrigens in IEEE 1284 beschrieben.

fchk

von Sven S. (schwerminator)


Lesenswert?

So ich habe jetzt genauere Informationen. Es soll sich mit der 
Psychologie-Labor-Software "Presentation" unterhalten werden. In der 
Software werden Parallelports entweder als Eingang oder als Ausgang 
definiert (jedenfalls, wenn sie 8 bit breit sein sollen). Nähere Infos 
hier: 
http://www.neurobs.com/pres_docs/html/03_presentation/06_hardware_interfacing/01_ports/01_port_devices.htm 
Es scheint so, als würden (wenn Port als "Data Port" verwendet wird) nur 
die 8 Datenbits verwendet.

Die Richtung PC -> µC bereitet mir keine Sorge: Einfach die LPT-Pins 
(D0-D8) an einen Port des µC und diesen als Eingang definieren. Reicht 
das?

Bei der anderen Richtung (µC -> PC) macht mir folgendes Szenario Sorgen: 
In der Presentation Software muss der LPT ja zunächst irgendwie als 
Eingang definiert sein. Wenn jetzt die Software aber nicht gestartet ist 
und das Gerät immernoch am PC hängt, kann es ja sein, dass der PC die 
Datenbits irgendwie treibt und es dadurch zum Kurzschluss kommt, wenn 
gleichzeitig der µC ein Datenbyte auf den Bus gibt. Oder kann man davon 
ausgehen, dass die LPT-Pins in einem Tri-State-Zustand sind, wenn kein 
Programm den Port verwendet? Ich hoffe, ich konnte meine Bedenken 
einigermaßen rüberbringen.

Ich habe einfach noch nie mit dem Parallel Port gearbeitet und weiß kaum 
was darüber. Ja, natürlich habe ich schon einiges gelesen (Wiki, 
etc...).

Vielleicht kann ja jemand etwas Licht ins Dunkel bringen. Wenn noch 
Infos fehlen, bitte einfach nachfragen.

von Chris (Gast)


Lesenswert?

Dein Dokument gibt ECP/EPP vor.
Dann nimm EPP, ist einfacher, und im Prinzip ein 8bit ISA bus wo die 
addressen auf 8bit beschränkt sind. Da interrupt gebraucht wrid,
es gibt 3 bits, welche mit einem Priority decoder zusammen mit dem
Interrupt auf 8 Interruptleitungen aufgebohrt werden kann, sollte das 
gebraucht werden, bei ECP gibt es kein Interrupt.
Also max 16/32 Geräte mit max 8 Interrupts und 16/8 eigenen Addressen,
es gibt aber auch viele Bausteine mit weniger Addresse, z.B. 82c55 mit 
4,
Latch mit einer, ... .

von Sven S. (schwerminator)


Lesenswert?

Wie gesagt, ich glaube die Software Presentation benutzt nicht ECP/EPP 
sondern lediglich Bitbanging. Alles was ich über die Software hab, ist 
aber die verlinkte Doku. Es geht mir vor allem um die Verschaltung und 
Schutzmaßnahmen.

Es wird später so laufen, dass der Ausgangs-LPT des PC 0x00 auf den 
Datenpins legen wird, dann irgendwann kommt für eine in Presentation 
festgelegte Zeit ein Wert auf den Datenleitungen. Als Reaktion darauf 
soll der µC einen Wert auf die Datenpins des anderen LPT legen (wieder 
für eine definierte Zeit). Letzteren Eingangs-LPT überwacht Presentation 
ständig und registriert Änderungen der Datenbits.

Auf der Seite steht ja lediglich, dass im BIOS EPP/ECP eingestellt 
werden muss, nicht jedoch, dass die Kommunikation darauf beruht. Ich 
schätze, dass muss eingestellt sein, weil SPP die Datenbits nicht 
bidirektional vorsieht.

von Guido (Gast)


Lesenswert?

Sven S. schrieb:
> Oder kann man davon
> ausgehen, dass die LPT-Pins in einem Tri-State-Zustand sind, wenn kein
> Programm den Port verwendet?

Tristate nicht, aber sind es nicht OC-Pins mit schwachem Pullup? Ich
erinnere mich noch dumpf, dass man für Frickellösungen anständige
Pullups verwenden musste.

von Sven S. (schwerminator)


Lesenswert?

Guido schrieb:
> Sven S. schrieb:
>> Oder kann man davon
>> ausgehen, dass die LPT-Pins in einem Tri-State-Zustand sind, wenn kein
>> Programm den Port verwendet?
>
> Tristate nicht, aber sind es nicht OC-Pins mit schwachem Pullup? Ich
> erinnere mich noch dumpf, dass man für Frickellösungen anständige
> Pullups verwenden musste.

Ok, langsam nähern wir uns der Antwort. Was ich also benötige ist ein 
Buffer mit Open-Collector Ausgängen sowie "anständige" Pullups. Es böte 
sich also sowas wie der 74*07 an, gibts den auch 8-Bit breit? Wie 
groß/klein ist denn anständig, wenn nach 5V gezogen wird?

von Guido (Gast)


Lesenswert?

Na so typisch 4k7. Warum ein Buffer, du kannst doch die Pins der
meisten µC auf OC/OD einstellen?

von Sven S. (schwerminator)


Lesenswert?

Stimmt, klar! Danke!

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.