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
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?
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: > Der µC soll zwei LPTs bedienen, wobei die eine nur als Eingang, die > andere nur als Ausgang dient. Das ist immer noch keine Beschreibung.
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
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.
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, ... .
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.
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.
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?
Na so typisch 4k7. Warum ein Buffer, du kannst doch die Pins der meisten µC auf OC/OD einstellen?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.