www.mikrocontroller.net

Forum: PC-Programmierung LPT Port auslesen


Autor: x86 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Tag !

Habe einen Temperatursensor mit dig. Ausgang an den LPT angeschlossen 
und würde gerne wissen wie ich die Temperatur auslesen kann. Der Ausgang 
ist ein: "Single-wire 11-bit digital serial signal output".

Ich arbeite mit VB 2005 und verwende die inpout32.dll.

Befehle: Inp und Out.

Was ich nicht recht verstehe ist wie ich diese Daten auslesen kann und 
wie das überhaupt funktioniert. Das ich den Inp Befehle brauche ist mir 
schon klar, aber der Rest eben nicht.

In dem µC & Elektronik Bereich hat man mir diesen Code in C gegeben mit 
dem ich nichts Anfangen kann. BTW: Der Output vom Sensor hängt an 
Ausgang 1, also PIN3 des LPT's.

a = inp(BASE);
if(a & (1 << BIT#)) {...} else {...}


Nur als Ergebnis kommt doch eine Zahl zwischen 0 - 255 oder nicht ?

Die Formel im Datenblatt ist folgende:
Temperature = (Digital Signal / 2047 * 70 - 10)°C

Dazu ist eine kleine Tabelle:

Temp(°C)              Temp(°F)             Digital Value
-------------------------------------------------------------
-10                    14                        0x000
0                      32                        0x124
25                     77                        0x3FF
60                    140                        0x7FF

Zum Beispiel ist ja 25 °C = Hex 3FF bzw. in dez. 1023, aber wie soll man 
in einem Zahelbereich von 0-255 die Zahl 1023 anzeigen lassen ?

Ich versteh dieses ganze Prinzip noch nicht und bitte um Erklärung.
Ich war schon in einem anderen Forum, aber dort sind nicht so viele User 
im Hardware Bereich aktiv.

Bedanke mich für jeden Hinweis.

x86

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Deine Annahmen über den Zahlenbereich sind falsch, der ist nicht nur 8 
Bit groß, sondern eben 11. Also nicht 0..255 (00..FF), sondern 0..2048 
(000..7FF).

Autor: x86 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie meinst du das ? Der LPT hat auch 11 Bit ? Wie das denn ? Ich hatte 
immer 8 Bit.

Wie muss ich das denn auslesen ? Ich steh da echt aufm schlauch...

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Der LPT hat auch 11 Bit ?

Hm?

> ist ein: "Single-wire 11-bit digital serial signal output".

> Nur als Ergebnis kommt doch eine Zahl zwischen 0 - 255 oder nicht ?

Nein. Bei 11 Bit kommt ein Wert im Bereich 0 bis 2048 raus.

Autor: Roland Praml (pram)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Wie muss ich das denn auslesen ? Ich steh da echt aufm schlauch...

ja schon (eigentlich gewaltig)

> Single-wire 11-bit digital serial signal output

Single wire = 1 Datenleitung = 1 Bit
11-bit = Sensorwert
serial signal output != parallel

Du kannst mit dem Parallelport 8 Datenleitungen gleichzeitig 
ein/auslesen (darum heißt er Parallelport)

Wenn du jetzt einen Sensor an nur eine Datenleitung anschließt, 
interessiert dich nur was an dieser anliegt. dies kann entweder 1 oder 0 
sein.

Im Prinzip* musst deshalb den Parallelport 11 mal hintereinander 
auslesen, so dass du auf deinen Sensorwert kommst. (

*: Ganz so einfach ist es natürlich nicht, da die Kommunikation nach den 
1-wire specs erfolgt. Hierzu gibts für den DS1820 ja ne Menge 
Beispielcode im Netz.

Autor: x86 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Roland ! Vielen vielen dank ! Das hat mir schon sehr viel 
geholfen.

Das heißt ich muss den Wert von PIN3 auslesen und diesen speichern und 
diesen den anderen Werten dazu addieren oder wie ? Also ebenhalt 11 mal.

Könnt ihr mir da Source Code mäßig etwas weiter helfen ?

Danke

Autor: x86 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry aber komme da echt nicht weiter... Icb bräuchte etwas mehr Hilfe.

Autor: Roland Praml (pram)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry unsere Glaskugel ist defekt...
verrate uns doch mal
- welchen Sensor du hast
- wie du ihn angeschlossen hast

Dann werden sich glecih 2 Fragen stellen:
- wie ist das genaue Datenformat (steht im Datenblatt vom Sensor)
- ist die Schaltung dafür überhaupt geeignet

für einen DS1820 macht man es nämlich so:
http://lena.franken.de/hardware/temperaturmessung.html

Autor: x86 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Roland, deine Glaskugel werde ich gleich kaputt schlagen und die 
Scherben aufessen :P ^^

Read: Beitrag "Gleiches Problem: Temperatursensor"

Autor: Jupp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Das heißt ich muss den Wert von PIN3 auslesen und diesen speichern und
>diesen den anderen Werten dazu addieren oder wie ?

Du kannst den Wert von Pin 3 nicht auslesen sondern nur den Wert des 
gesamten Ports. In diesem Gesamtwert mußt du dann überprüfen, ob Pin 3 
gesetzt ist:

if((Gesamtwert & (1<<3))==(1<<3)) {...}  / Bit ist gesetzt

Autor: x86 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Jupp. Aber ich habe jetzt eine andere Methode gefunden, die ist 
etwas komplizierter, aber sie ist schonmal ein guter Anfang.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.