DS18B20 ID-auslesen - spezielles Thema
Hallo Freunde.
Wie es die Überschrift bereits verrät, ist mein Thema spezieller Natur und ich komme definitiv mit den Standard-Themen rund um den DS18B20 Temperatursensor nicht weiter.
Da ich nicht mit Laufen das Gehen lernen möchte, möchte ich mich zunächst erst einmal um das 1-Wire-Busverfahren kümmern. Das Auslesen der Termperatur kann ich später immer noch mal ^^.
Mein Problem liegt beim Auslesen der eingebrannten Seriennummer des Sensors. Soweit ich mich belesen habe, besteht dieser aus 3 Blöcken und zum Ansteuern mehrerer Datenbusse muss ich die gesamte Kennung auslesen und auch vollständig zur Adressierung eintragen können.
Meine Frage nun ist also: Wie lese ich die ID vollständig aus?
Wie lasse ich sie mir anzeigen?
Zur Verfügung habe ich lediglich mein STK500 sowie einen einfachen Programmer (DIAMEX-AVR), BASCOM in der Vollversion sowie ein 2-Zeilen-Display, direkt an das STK500 angeschlossen.
Ich fand bislang nur Möglichkeiten, die Seriennummer in einem Array auszuwerten/anzuzeigen, aber dieses wurde immer mit einem Print-Befehl ausgegeben. Habe jedoch keine weitere Ausgabemöglichkeit.
LG - Maik
- - - Aktualisiert - - -
Hm, anscheinend ist mein DS18B20 defekt.
Angeschlossen ist er korrekt (Pin 1 an GND, Pin 3 an VDD (+5V), Pin 2 an PortC.5 sowie mit einem 4,7K-Widerstand an +5V). Wenn ich ihn ansteuere (Code unten) und nur die Temp auslesen möchte, bekomme ich immer ein FFFF in der ersten Zeile und in der 2ten steht nur eine 127, die sich nicht ändert.
Soweit ich es mitbekommen habe, antwortet der Bus nicht, weshalb die FFFF erzeugt werden. Da ich keinen 2ten unterwegs mit habe, muss ich also bis zum Wochenende warten. Scheiße teuer die Dinger und dann auch noch kaputt.
Code:
$regfile = "m8def.dat"
$crystal = 3686411
$hwstack = 40
$swstack = 16
$framesize = 32
$baud = 4800
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
Config Lcd = 16 * 2
Cursor Off
Config 1wire = Portc.5
Dim Ar(2) As Byte
Cls
Do
1wreset
1wwrite &HCC
1wwrite &H44
Waitms 500
1wreset
1wwrite &HCC
1wwrite &HBE
Ar(1) = 1wread(2)
Waitms 500
Locate 1 , 1
Lcd Hex(ar(2)) ; Hex(ar(1))
Locate 2 , 1
Shift Ar(1) , Right , 1
Lcd Ar(1)
Loop
End
LG - Maik