Tutorial 01: Steuerung - Die parallele Schnittstelle

Anleitungen für "hausgemachte" LED Projekte

Moderator: T.Hoffmann

Tim Thiele
Ultra-User
Ultra-User
Beiträge: 731
Registriert: Do, 24.08.06, 22:44

Fr, 25.08.06, 17:11

Tutorial 01: Steuerung - Die parallele Schnittstelle

<b><u>01.1: Die Register der parallelen Schnittstelle</u></b>
<u><i>01.1.1: Die verschiedenen Register</i></u>
<u><i>01.1.1.1: Kurzbeschreibung der Register</i></u>
a) Das Steuer-Register (Control) hat 4pins, welche als Ein- (und Ausgänge bei neuen Schnittstellen) genutzt werden können.
b) Das Daten-Register (Data) hat 8pins, welche nur als Ausgänge genutzt werden können.
c) Das Statusregister (Status) hat 5pins, welche nur als Eingänge benutzt werden können.


Nun, das ergibt zusammen 17pins, ein Druckerkabel hat aber 25pins. Die restlichen Pins sind geerdet (GND). Welche Pins zu welchem Register gehören werde ich weiter unten erläutern.

<u><i>01.1.1.2: Näheres zum Datenport</i></u>
Der Datenport ist ein 8-Bit-Ausgangsport, der ursprünglich durch ein Latch 74374 realisiert wurde. Die ausgegebenen Daten können über einen Treiber 74244 zürückgelesen werden. Heutzutage finden Sie auf Ihrem PC-Board natürlich keine TTL-Schaltkreise mehr, sondern die Schnittstellen sind in ein ASIC integriert. Die Funktion ist jedoch dieselbe wie bei diskretem Aufbau. Heutige Schnittstellen erlauben meist auch die Umschaltung zwischen Ausgang und Eingang.

<u><i>01.1.2: Die Adressen der Register</i></u>
Ein Computer kann max. 3 parallele Schnittstellen haben. Ich habe eine kleine Tabelle angelegt, in der den Schnittstellen ihre Register und ihre Adressen zugeordnet sind:

######### Externer Link #########
http://85.214.60.32/tut01_tab1.htm
######### Externer Link #########

<b><u>01.2: Pinbelegung</u></b>
<u><i>01.2.1: Tabelle mit Pinbelegung</i></u>
Hier habe ich eine kleine Tabelle angelegt, in der die Pinbelegung aufgeführt ist. Zusätzlich steht die Funktion für SPP-Signale dabei, die uns an dieser Stelle nicht intressiert. Aber wir wollen ja ein schönes vollständiges Tutorial haben. Was eine 'Hardware-Invertierung' ist, erkläre ich direkt im nächsten Abschnitt:

######### Externer Link #########
http://85.214.60.32/tut01_tab2.htm
######### Externer Link #########

<u><i>01.2.2: 'Hardware invertiert'</i></u>
Normal ist ein Pin mit den Status 0 mit 0V und ein Pin mit dem Status 1 mit 5V+ belegt, bei den Pins, bei denen Hardware invertiert steht, ist das genau umgekehrt, es handelt sich hier um die Pins: 1, 11, 14 und 17.

<b><u>01.3: Ansprechen der Register unter QuickBasic</u></b>
Ich nehme hier mal den Quickbasic-Befehl, weil es mir am einfachsten erscheint, weil hierzu keine Headerdateien oder irgendwelche Bibliotheken benötigt werden.
<b>Befehlsaufbau für Daten+Steuerport:</b>
OUT &H(Adresse), (Bits)

<b>Befehlsbeispiel für Datenport (Output):</b>
OUT &H374, 17

<b>WICHTIG:</b>
a) Immer eine Dezimalzahl an die Schnittstelle schicken.<br>
b) Immer ein &H (hexadezimal) davor setzen, jedoch nur in Quickbasic, in anderen Sprachen schreibt man z.B. 0x davor oder ein kleines h dahinter.

<b>Funktion des Beispiels:</b>
Wenn ich 17 (binär: 00010001) an die Schnittstelle schicke, schalte ich die Pins 2 und 6. In der Binärzahl entspricht das erste Bit dem 9ten Pin, und das letzte dem 2ten.

<b>ANMERKUNG:</b>
Beim Steuerport darf man natürlich nur 4 Bits schicken. Auch hier entsprechen die einzelnen Bits der Binärzahl den Pins in rückwärts-Reihenfolge

<b><u>01.3: Anhänge</u></b>
<u><i>01.3.1: Bild - Druckvorgang (by Prof. Plate)</i></u>
Dieses Bild zeigt den normalen Ablauf beim Drucken von einem Zeichen:

######### Externer Link #########
http://85.214.60.32/tut01_pic1.htm
######### Externer Link #########

<u><i>01.3.2: Treiber - inpout32.dll</i></u>
Treiberdatei für alle 32bit-Windowsversionen

######### Externer Link #########
http://85.214.60.32/tut01_anh1.htm
######### Externer Link #########


<b><u>01.4: Nachwort</u></b>
<u><i>01.4.1: Eigentumsbestimmungen</i></u>
Der Workshop ist mein geistiges Eigentum und geht mit dieser Klausel in den Besitz von LUMITRONIX über.

<u><i>01.4.2: Feedback und Fragen</i></u>
Ich würde mich über Lob und konstruktive Kritik freuen, Fragen bitte nicht im Thread sondern per PM.

<u><i>01.4.3: Nächster Workshop</i></u>
In meinem nächsten Workshop werde ich die Funktionsweise von Schiebregistern (ICs) erklären, damit könnt ihr über einen einzigen Druckerpin unendlich viele Kanäle steuern. Unter anderem im Workshop: Aufbau, Kaskadierung, programmiertechnisches Ansprechen der ICs, Schiebevorgang und vieles mehr.
Zuletzt geändert von Tim Thiele am Fr, 25.08.06, 19:05, insgesamt 15-mal geändert.
Benutzeravatar
Timm
Mega-User
Mega-User
Beiträge: 387
Registriert: So, 25.06.06, 18:53

Fr, 25.08.06, 17:23

hmm :? bei mir geht die seite nicht

edit: geht
Benutzeravatar
Fightclub
Post-Hero
Post-Hero
Beiträge: 5114
Registriert: Mi, 01.03.06, 18:40

Fr, 25.08.06, 17:33

hi Tim, gut gemacht, tolles tutorial, wenn du noch die Umlaute so machst dass der Firefox sie auch versteht gibts dafür dann noch ein paar credits ;)
Tim Thiele
Ultra-User
Ultra-User
Beiträge: 731
Registriert: Do, 24.08.06, 22:44

Fr, 25.08.06, 17:36

Ich denke, so ist am besten, nur die Tabellen hab ich mal kurz extern gelegt, bis ich rausfinde wie das funktioniert mit BB-Codes.
CHMODs wurden gesetzt, hatte erstmal den falschen Server gewählt :oops: kein Wunder wenn man soviele hat xD

Das ist das erste Tut, komplett fertig jetzt, und der nächste kommt heute Abend/Nacht, hab noch kurz was anderes zu tun.

Gruß,
Tim Thiele
root
Mega-User
Mega-User
Beiträge: 459
Registriert: Di, 28.03.06, 21:32

Fr, 25.08.06, 18:35

Also wenn ich mich nicht irre, kann man seit Win2000 nicht einfach mit dem Befehl OUT, die Bits setzten.
Prililegierter Zugriff oder so heißt glaube ich das Stichwort.
Wenn ich mich recht entsinne gibt es aber auch Tool um dies abzustellen.
Tim Thiele
Ultra-User
Ultra-User
Beiträge: 731
Registriert: Do, 24.08.06, 22:44

Fr, 25.08.06, 18:43

Updates:
Header hinzugefügt, zur eindeutigen kennzeichnung.
Anhänge hinzugefügt.

@Win2000
Ja, in Windows 98 funktioniert es noch, und ich benutzte sowieso Ubuntu 6.06 Dapper Drake.

Update:
Voila, da ist der Treiber, da ich immoment Linux benutze kann ich den TestCode für VB erst später oder morgen geben.
Benutzeravatar
Volker K.
Site Admin
Site Admin
Beiträge: 746
Registriert: Mo, 14.08.06, 16:01

Fr, 25.08.06, 19:55

Ich trau verlinkten direkt Ips nicht :lol:
808_tab_1_1.jpg
808_tab_2_1.jpg
808_tab_3_1.jpg
808_tab_4_1.jpg
Tim Thiele
Ultra-User
Ultra-User
Beiträge: 731
Registriert: Do, 24.08.06, 22:44

Fr, 25.08.06, 19:58

Du hast sie aber, trotz deinem Misstrauen geöffnet, ich glaub so unseriöß bin ich doch auch nicht, und wenn nicht könnte man mich über die IP direkt ausfindig machen, falls ich mal Mist baue, lol^^

Die IP direkt ist halt mein -Ordner für alles mögliche- weil ich meine Projekte nicht zumüllen will, und ich außer der IP keine Domain habe, die ungenutzt wäre.

@Volker
Und wo bleibt das Feedback?^^
Benutzeravatar
Volker K.
Site Admin
Site Admin
Beiträge: 746
Registriert: Mo, 14.08.06, 16:01

Fr, 25.08.06, 20:01

also das tutorial ist ansich ein sehr guter Einstieg. Man koennte das ganze vielleicht noch anhand eines beispiels verdeutlichen (z.B. wie man damit ne led leuchten laesst oder es per messgeraet messen kann)

@ips trauen:
ich meine eher weil ips nicht sooo sonderlich bestaendig sind und deine tabellen irgendwann einfach nicht mehr auffindbar sind. kennst du dyndns?
Tim Thiele
Ultra-User
Ultra-User
Beiträge: 731
Registriert: Do, 24.08.06, 22:44

Fr, 25.08.06, 20:04

Lol, das sind statische IPs von einem Server meiner Firma/Projektgruppe nenn es wie du willst XD...

Die Dateien gehen nicht verloren, die IP ändert sich nicht, und ansonsten ist der Speed halt gut, okay, der Server hat jetz nich einen sooo guten Speed, aber das iss ja auch der Testserver von Strato, der kostet nur 80€, ansonsten housen wir eigentlich.
Benutzeravatar
Volker K.
Site Admin
Site Admin
Beiträge: 746
Registriert: Mo, 14.08.06, 16:01

Fr, 25.08.06, 20:07

oh axo dachte waere dein heimserver *g*
Tim Thiele
Ultra-User
Ultra-User
Beiträge: 731
Registriert: Do, 24.08.06, 22:44

Fr, 25.08.06, 20:09

Naja bei 13 PCs hier zu Hause im Netzwerk, und dann noch alle hinter einem Router, da wärs ja ein Wunder wenn ich Port 80 bekäm :D Nein nein, das ist ein Server von standard-networkz (meiner Projektgruppe&GbR).

http://standard-networkz.com
(Homepage ist noch NICHT ganz fertig).
root
Mega-User
Mega-User
Beiträge: 459
Registriert: Di, 28.03.06, 21:32

Fr, 25.08.06, 20:14

Achso, mal ein Feedback zum Tutorial: Ich würde fast sagen, dass es Overskilled ist. Wenn man sich mal so anguckt welche Fragen hier teilweise des öftern gefragt werden, sind die meisten wohl damit überfordert.
Zum andern, Parallelports verschwinden doch zunehmens.
Und halt die Sache mit dem Zugriff unter Win2k/XP usw. da mittlerweile wohl nicht mehr allzuviele Leutchen Win98 benutzen.
Ich hab jetzt nichts gegen deinen Beitrag einzuwenden, nur ob er hier von so großem Nutzen sein wird bezweifel ich doch eher.
Ich für meine Zwecke greife für die Steuerung von LED's oder ähnlichem lieber auf den DMX Standard zurück, wobei der Aufwand um einiges größer ist und sich nicht immer rechnet. Also der Parallelport hat durchaus seine Berechtigung :wink:
Tim Thiele
Ultra-User
Ultra-User
Beiträge: 731
Registriert: Do, 24.08.06, 22:44

Fr, 25.08.06, 20:17

Die Treiber-Datei ist unter Anhänge zufinden. Funktioniert mit Win2k, XP und allem. Es folgt auch noch C++ und VB Script, dauert alles seine Zeit, ich hab grad nur einen Linux-Rechner hier stehen...
Benutzeravatar
Fightclub
Post-Hero
Post-Hero
Beiträge: 5114
Registriert: Mi, 01.03.06, 18:40

Fr, 25.08.06, 22:10

für dieses äußerst gelungene Tutorial vergebe ich 75 Credits an Tim Thiele, bei fertigstellung (Scripte, etc.) werden weitere 25 vergeben
Tim Thiele
Ultra-User
Ultra-User
Beiträge: 731
Registriert: Do, 24.08.06, 22:44

Fr, 25.08.06, 22:12

Vielen Dank, fightclub, ich hatte einen sehr schönen Einstieg, und wie man sieht steigt das Geld rasend :D

@Volker
Der Druckerport wird niemals sterben XD Ich hab am alten P90 sogar noch einen breiten seriellen Port (Sieht aus wie ein Druckerportstecker).

Naja, DMX-Steuerung schön und gut, damit kannst du auch eine "Lichtshow" über ein DMX-Programm machen, aber eigene Spiele und so fürs Display schreiben, diese Möglichkeit entfällt für Leute die nicht programmieren können + es wäre großer Aufwand für ein Spiel zu schreiben, viel größer als die knapp 150 Zeilen QB-Code,
MTecK
Mega-User
Mega-User
Beiträge: 216
Registriert: Mi, 23.08.06, 13:47
Kontaktdaten:

Fr, 25.08.06, 22:30

Nur so ich habe auch schon keine RS232schnittstelle mehr !! gescheige den den Druckerport und ich weissage das er in den kommenden jahren austerben wird vielleicht nicht für eineige bastleraber ansonsten wird es wenn nur noch adapter geben wie z.b. von USB
Tim Thiele
Ultra-User
Ultra-User
Beiträge: 731
Registriert: Do, 24.08.06, 22:44

Fr, 25.08.06, 22:36

Was ist das Problem, das jetzt du diesen Thread nicht brauchst, und wer sagt nicht das es auch über USB ginge, wenn man einige kleine Tests durchführt.

Ich habe nur noch keine Lösung das immoment anzusprechen und sehe noch keinen Grund eine zufinden, schließlich haben auch heute noch alle gängigen PCs die man so in Geschäften sieht, und auch jeder Laptop noch einen Druckerport.

Außerdem nimmt fast niemand zum basteln seinen richtigen PC, wäre ja Schwachfug, wenn da mal was kaputt gehen würde, ich nehme für mein neues Projekt z.B. ein altes P90 weil es dort viele mögliche Schnittstellen zum ansprechen gibt.

Und das mit dem stirbt nie aus, war auch so gemeint, das man ihn immer noch benutzen wird, jedenfalls einige Leute, auch ich habe schon eine neue RJ45-Lösung gefunden, und kann ICs auch über ein Netzwerkprotokoll ansprechen, aber solche Sachen sind einfach zu kompliziert für Laien, deshalb -> Druckerport.

Fazit:
a) Niemals einen neuen PC zum basteln benutzen, a) muss man immer Treiber installieren und b) wenn mal was kaputt geht ist Schade, altes P90 oder nen 486er bekommt man gerne für 5-10€ auf ebay oder im Findling.
b) Es gibt schon PCs ohne Schnittstelle (wobei ich das noch nie gesehen habe :D und auch glaube das irgendwo auf dem Board noch ein Bus dafür ist, den man mit entsprechendem Kabel in einen parallel Port verwandeln kann.
c) Es gibt weiterhin Lösungen über Microcontroller, Flashspeicher, IR-Steuerug, Bluetoothsteuerug und meine komplexeste Erfindung, die RJ45-Lan-Steuerung^^
Zuletzt geändert von Tim Thiele am Fr, 25.08.06, 22:43, insgesamt 1-mal geändert.
Benutzeravatar
Doc_McCoy
Hyper-User
Hyper-User
Beiträge: 1962
Registriert: Sa, 03.06.06, 15:49
Wohnort: Neualbenreuth
Kontaktdaten:

Fr, 25.08.06, 22:43

Also ich habe mir eine Relaikarte gebaut, die ich über den Parallelport mit einen VBprogramm ansteuern kann.
Ich habe das so ähnlich mit den Pins gemacht. Aber fragt mir nicht wie ich das geschafft habe, dass waren längere Nächte.
582_Relaiskarte_1.jpg
^^^So das ist meine Relaiskarte
Tim Thiele
Ultra-User
Ultra-User
Beiträge: 731
Registriert: Do, 24.08.06, 22:44

Fr, 25.08.06, 22:46

Ja, Relais hab ich auch schon, ein IC hat nur Relais angeschlossen und damit steuere ich die Schrittmotoren an denen der Lüfter hängt. Über Microcontroller und Temperaturfühler (auf Widerstand basierend) geben zusätzlich Inputs und der Lüfter fährt genau dahin, wo er soll. Da die ganze Schaltung 5V war, und der Lüfter 12V und die Schrittmotoren 24V, habe ich einfach 5V Relais genommen, die konnte das IC grade so mit einem vorgeschalteten ULN2803A schalten.

Außerdem:
Relais sind teuer, die billigere Methode, aber wie immer kompliziertere ist: Triacs + Optokoppler :wink:

Damals wusste ich das noch nicht, wie das funktioniert, aber ich hab mich da überall reingelesen, und würde wenn ich soetwas heute nochmal baue, mit Triacs + Optokopplern arbeiten.
Benutzeravatar
Volker K.
Site Admin
Site Admin
Beiträge: 746
Registriert: Mo, 14.08.06, 16:01

Sa, 26.08.06, 04:54

den roboter den ich mal gebaut hatte wurde ueber den seriellen port angesprochen. Drucker Port waere noch einfacher gewesen aber der AVISE Chip hat kein Problem mit Seriellem Port zu kommunizieren deswegen war dies die einfachste Methode.
Es gibt schon PCs ohne Schnittstelle (wobei ich das noch nie gesehen habe Very Happy und auch glaube das irgendwo auf dem Board noch ein Bus dafür ist, den man mit entsprechendem Kabel in einen parallel Port verwandeln kann.
Ich hab so ein ding zuhause noch rumliegen. Das steckte mal in nem uralt pc den ich bekommen habe drin weil der vorbesitzer anscheinend dringend 2 Druckerports brauchte *g*

Aber ich finde es ein Unding das heutzutage ueberall die ganzen wichtigen Schnittstellen durch USB ersetzt werden. Ich finde USB nicht schlecht sondern - ganz im gegenteil - es ist eine wirklikche vereinfachung (oder habt ihr schon mal nen druckerport hub gesehen x-D ). Aber zumindest einen Seriellen und einen Paralellen Port sollte doch wirklich jeder PC haben.

Genauso ist das mit dem Diskettenlaufwerk was bei immer mehr PCs weggelassen wird. Ich hatte schon oft das Problem bei dem neuen PC von meinem Bruder das ich ihm nicht einfach mal was auf Diskette geben konnte. Ich meine solange der PC laeuft ist ja alles in Ordnung aber wenn mal ne Wartung anfaellt ist es _sehr_ umstaendlich von USB oder CD zu booten.
root
Mega-User
Mega-User
Beiträge: 459
Registriert: Di, 28.03.06, 21:32

Sa, 26.08.06, 08:10

Vor einigen Jahren, als ich mit DMX noch nichts am Hut hatte, habe ich so eine ähnliche Relaiskarte gebaut, alles einzeln mit Transistoren als Treiber, heute würde ich wohl einen ULN2803 nehmen :wink:
Funktioniert hat das ganze mit Par36 einwandfrei nur das klackern der Relais bei höheren Frequenzen war irgendwann doch etwas nervig und gab mir bedenken, ob die das lange mitmachen. :lol:
Aber hat immer gut gehalten.
Hatte damals ein Programm dafür gehabt, PicoLights oder so hieß das wenn ich mich nicht irre. Hat seinen Zweck doch recht gut erfüllt :wink:
Benutzeravatar
Doc_McCoy
Hyper-User
Hyper-User
Beiträge: 1962
Registriert: Sa, 03.06.06, 15:49
Wohnort: Neualbenreuth
Kontaktdaten:

Sa, 26.08.06, 12:16

Also ich habe ja auch keine Relais eingebaut. Ich habe 2 ICs eingebaut. Ist die billigste Möglichkeit.
Tim Thiele
Ultra-User
Ultra-User
Beiträge: 731
Registriert: Do, 24.08.06, 22:44

Sa, 26.08.06, 13:21

Ja, Entschuldigung wenn ich darauf hinweise, das wir etwas abweichen, ich hätte gerne lieber ein bisschen Feedback zum Workshop als eure Erfahrungen gewusst :D
bbking
Mini-User
Beiträge: 4
Registriert: So, 27.08.06, 13:03

So, 27.08.06, 13:06

Tim Thiele hat geschrieben:Ja, Entschuldigung wenn ich darauf hinweise, das wir etwas abweichen, ich hätte gerne lieber ein bisschen Feedback zum Workshop als eure Erfahrungen gewusst :D
also, ich danke dir mal für die einführung und warte gespannt auf die forsetzung... ;)
ich sitze da vor einer debian kiste, habe hier nur bwBASIC und yabasic, leider kennt keiner der beiden den befehl OUT...was verwendest du unter Ubuntu?

lg
Antworten