µC korrekt an LPT anschließen

OP #2953720
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
Persönliche Seite
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?
OP
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
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
OP
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.
Gast
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, ... .
OP
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.
Gast
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.
OP
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?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 13 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.