Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Reaper14
Anmeldungsdatum: 17.11.2009 Beiträge: 4
|
Verfasst am: 17.11.2009, 21:49 Titel: Parallelen Port abfragen |
|
|
Hallo,
ich hab letzten Woche mit Free Basic begonnen und hab mich jetzt auch schon durch die Tutorials gearbeitet und mit Hilfe der Befehlsreferenz heraus gefunden das ich mit out port,pid den Druckerport bedienen kann. Aber wie ist es möglich die herauszufinden ob Spannung an einer Datenleitung anliegt? Ich meine gibt es dafür auch einen Befehl und falls ja könnte mir einer ein kurzes Beispiel machen weil ich finde die Befehlsreferenz ziemlich trocken. Wie muss ich das dann eigentlich machen, einfach den Pluspol(oder minus weil ja in der Physik die Stromrichtung anders ist) mit dem entsprechendem Pid verbinden(natürlich mit einem 1k Wiederstand dazwischen das es kein Kurzschluss gibt.)
Ich hoffe ihr könnt mir helfen.
Mit freundlichen Grüßen Reaper14 |
|
Nach oben |
|
 |
Elektronix
Anmeldungsdatum: 29.06.2006 Beiträge: 742
|
Verfasst am: 17.11.2009, 23:20 Titel: |
|
|
Was meinst Du mit "ob Spannung anliegt"- Willst Du Ausgangsspannungen oder Eingangsspannungen abgreifen? Für Ausgangsspannungen reicht eine simple LED-Schaltung mit Treibertransistoren. Und messen kann man das auch einfach so. _________________ Und die Grundgebihr is aa scho drin- DOS is jo nett. |
|
Nach oben |
|
 |
Reaper14
Anmeldungsdatum: 17.11.2009 Beiträge: 4
|
Verfasst am: 17.11.2009, 23:42 Titel: |
|
|
Also ich möchte eine Schaltung bauen, in der sehen kann ob ein Schalter gedrückt wurde oder nicht. Ich würde dafür den Pluspol von einer Batterie mit einem Schalter verbinden das dann mit einen Wiederstand und das dann mit dem Parallelen port:
Code: |
V5-------Schalter-------Wiederstand-----Paralleler Port.
|
Und wenn ich dann den Schalter drücke musste ja an dem Port 5V (oder weniger wegen dem Wiederstand) ankommen und wie kann ich das erkennen? Oder hab ich da irgendeinen Grundlegenden Fehler drin?
Edit:
Oder was vielleicht sogar besser wäre ist es möglich zu überprüfen ob eine Datenleitung mit einer Masse verbinden ist? Also ob z.b. pin2 (Datenleitung) mit pin 25 (Masse) verbunden ist? So wurde sich das ganze mit dem Schalter einfacher machen lasen. |
|
Nach oben |
|
 |
Elektronix
Anmeldungsdatum: 29.06.2006 Beiträge: 742
|
Verfasst am: 18.11.2009, 10:16 Titel: |
|
|
Kleiner Tip: Ein bißchen Komma-Setzung würde Deine Postings deutlich verständlicher machen.
Du willst also Daten von über eine Portleitung einlesen. Dazu brauchst Du den Widerstand zwischen Schalter und Widerstand nicht, solange Du die üblichen 5V nicht überschreitest. Du brauchst nur einen Pull-Down-Widerstand nach Masse für den Fall, daß der schalter offen ist, damit Du einen definierten LO-Pegel hast.
Dann mußt Du die Basis-Adresse des Ports - meistens 378h oder so - und des entprechenden Registers ermitteln (der LPT-Port hat 3 Register, die direkt hintereinander liegen: Datenleitungen = Basisasdresse, Statusleitungen = Basis +1, Steuerleitungen = Basis +2) und sicherstellen, daß Du nicht die Steuerleitungen (Ausgangsleitungen) mit einem Eingangspegel belegst.
Du kannst natürlich auch die Datenleitungen direkt abfragen, dazu muß der Port aber im BIOS auf EEP oder ECP eingestellt sein. _________________ Und die Grundgebihr is aa scho drin- DOS is jo nett.
Zuletzt bearbeitet von Elektronix am 18.11.2009, 21:02, insgesamt 2-mal bearbeitet |
|
Nach oben |
|
 |
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 18.11.2009, 16:02 Titel: |
|
|
Elektronix hat Folgendes geschrieben: | Kleiner Tip: Ein bißchen Komma-Setzung würde Deine Postings deutlich verständlicher machen. |
 |
|
Nach oben |
|
 |
Reaper14
Anmeldungsdatum: 17.11.2009 Beiträge: 4
|
Verfasst am: 19.11.2009, 16:31 Titel: |
|
|
Also ich hab im Bios von "Normal" auf ECP umgestellt. Es gab aber auch noch EEP und bidirektional. Aber wie frag ich das jetzt mit Basic ab, also ob da ein High oder low Pegel anliegt?.
Wenn ich jetzt so eine Schaltung habe: Code: | Datenleitung7(pin9)---Schalter----Pulldown Wiederstand---Masse | .Wie kann ich das jetzt abfragen? Oder muss ich die Statusleitungen benutzen also z.b.
Code: | Statusleitung(pin10)---Schalter----Pulldown Wiederstand---Masse |
Ich hab gelesen das ich diese Signale mit INP erkennen kann, aber bei INP steht in der Befehlsreferenz nur drin das man da die Portnummer in Klammer angibt. Also bei den Dateinleitungen 888 und bei den Statusleitungen 889. Aber wie kann ich sagen ,dass er das von einem bestimmten pin lesen soll? |
|
Nach oben |
|
 |
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
|
Nach oben |
|
 |
Elektronix
Anmeldungsdatum: 29.06.2006 Beiträge: 742
|
Verfasst am: 20.11.2009, 13:36 Titel: |
|
|
Reaper14 hat Folgendes geschrieben: | Also ich hab im Bios von "Normal" auf ECP umgestellt. Es gab aber auch noch EEP und bidirektional. Aber wie frag ich das jetzt mit Basic ab, also ob da ein High oder low Pegel anliegt?.
Wenn ich jetzt so eine Schaltung habe: Code: | Datenleitung7(pin9)---Schalter----Pulldown Wiederstand---Masse | .Wie kann ich das jetzt abfragen? Oder muss ich die Statusleitungen benutzen also z.b.
Code: | Statusleitung(pin10)---Schalter----Pulldown Wiederstand---Masse |
Ich hab gelesen das ich diese Signale mit INP erkennen kann, aber bei INP steht in der Befehlsreferenz nur drin das man da die Portnummer in Klammer angibt. Also bei den Dateinleitungen 888 und bei den Statusleitungen 889. Aber wie kann ich sagen ,dass er das von einem bestimmten pin lesen soll? |
Wenn Du ein Register abfragst, liefert Dir der Rechner ein ganzes Byte. Was da drin steht, hängt vom Alter Deines Rechners ab und von der Beschaltung ab (ältere Rechner haben noch reine TTL-Bausteine, da sind offene Leitungen einfach HI, neuere Rechner mit CMOS-Bausteinen wollen alle Leitungen beschaltet haben).
Wenn Du ein bestimmtes Bit abfragen willst, hilft es einfach, eine MAske darüber zu legen, also per AND (für 1) oder OR (für 0) ein Bit zu maskieren. Anderenfalls sollte sich der Wert auch aus der Dez-Zahl ergeben, den Dir die Abfrage liefert.
Denk daran, daß vom Status-Register nur 4 Leitungen genutzt werden, vom Steuer-Register nur 5.
Schau Dir nochmal die Addressierung an, soweit ich weiß, liegt das Status-Register bei 890dez. _________________ Und die Grundgebihr is aa scho drin- DOS is jo nett. |
|
Nach oben |
|
 |
Reaper14
Anmeldungsdatum: 17.11.2009 Beiträge: 4
|
Verfasst am: 21.11.2009, 23:53 Titel: |
|
|
Ok ich denke das ich es jetzt so einigermaßen verstanden hab. Ich hab jetzt mal das Statusregister ausgelesen.
Code: | print inp(&h379)
sleep |
Die Ausgabe war 127 also Binar 01111111. Daraus schlisse ich das alle Pins bis auf eins auf High Pegel sind. Dieses eine Pin wird der Pin 11 sein weil der negiert ist also False zurückliefert wenn ein High Pegel anliegt.
Könnte ich jetzt z.b. eine Verbindung von einem Datenpin zu einem Statusregisterpin machen und mit einem Wiederstand die Spannung so weit runterziehen das am Statusregisterpin nur noch ein Lowpegel anliegt?
Mit freundlichen Grüßen Reaper
PS: An meinem Port war nichts anschlossen. |
|
Nach oben |
|
 |
Elektronix
Anmeldungsdatum: 29.06.2006 Beiträge: 742
|
Verfasst am: 22.11.2009, 11:24 Titel: |
|
|
Nicht mit einem Widerstand, sondern direkt an Masse legen.
Aber mach Dich mit den Spezifikationen vertraut. Die 3 übrigen Bits, die nicht für den Drucker-Status gebraucht werden, haben im ECP/EEP-Modus auch ihre Bedeutung.
http://members.inode.at/anton.zechner/az/Parallel.htm
siehe Bit 4 und 5 im 3. Register. _________________ Und die Grundgebihr is aa scho drin- DOS is jo nett. |
|
Nach oben |
|
 |
|