sonium
11.09.2007, 15:54
Hallo, ich versuche erst mal mit Bascom einen ds1820 auszulesen. Ich hab ihn mit einem 4,7kOhm Widerstand wie hier beschrieben am RN-Control angeschlossen
http://embedded-system.net/embedded-system/images/dallas-ds1820-circuit.gif
VCC hab ich am +5V meines hängen. Der GND Pin hängt in der Luft. Ist das korrekt?
Hier außerdem der Bascom Code:
$regfile = "m32def.dat" 'Die Anweisung bestimmt Controllertyp, hier AVR Mega 32
$framesize = 32 'Stackanweisungen, die eigentlich nur bei größeren Programmen
$swstack = 32 'wirklich nötig werden
$hwstack = 32
$crystal = 16000000 'Die Frequenz des verwendeten Quarzes
$baud = 9600 'Die Baudrate für RS232 Ausgabe.
Config 1wire = Porta.0 'use this pin
Dim Ar(2) As Byte , A As Byte , I As Byte , Temperatur As Integer
Dim Halb As Byte
Print "Temp:"
Do
Wait 1
1wreset 'reset the device
1wwrite &HCC 'read ROM command
1wwrite &H44
Waitms 100 'read ROM command
1wreset 'reset the device
1wwrite &HCC 'read ROM command
1wwrite &HBE 'read ROM command
For I = 1 To 2
Ar(i) = 1wread() 'place into array
Next
Locate 2 , 1
Temperatur = Ar(1)
If Ar(2) > 0 Then Temperatur = 0 Else Shift Temperatur , Right
Print Temperatur ; ".";
Halb = Ar(1) And 1
If Halb = 1 Then Print "5" Else Print "0"
Print " C"
Loop
End
Wenn ich den Sensor nicht angeschlossen hab bekomme ich 0.0 Grad ansonsten 0.5 Grad (und so kalt ist es hier auch nicht)
http://embedded-system.net/embedded-system/images/dallas-ds1820-circuit.gif
VCC hab ich am +5V meines hängen. Der GND Pin hängt in der Luft. Ist das korrekt?
Hier außerdem der Bascom Code:
$regfile = "m32def.dat" 'Die Anweisung bestimmt Controllertyp, hier AVR Mega 32
$framesize = 32 'Stackanweisungen, die eigentlich nur bei größeren Programmen
$swstack = 32 'wirklich nötig werden
$hwstack = 32
$crystal = 16000000 'Die Frequenz des verwendeten Quarzes
$baud = 9600 'Die Baudrate für RS232 Ausgabe.
Config 1wire = Porta.0 'use this pin
Dim Ar(2) As Byte , A As Byte , I As Byte , Temperatur As Integer
Dim Halb As Byte
Print "Temp:"
Do
Wait 1
1wreset 'reset the device
1wwrite &HCC 'read ROM command
1wwrite &H44
Waitms 100 'read ROM command
1wreset 'reset the device
1wwrite &HCC 'read ROM command
1wwrite &HBE 'read ROM command
For I = 1 To 2
Ar(i) = 1wread() 'place into array
Next
Locate 2 , 1
Temperatur = Ar(1)
If Ar(2) > 0 Then Temperatur = 0 Else Shift Temperatur , Right
Print Temperatur ; ".";
Halb = Ar(1) And 1
If Halb = 1 Then Print "5" Else Print "0"
Print " C"
Loop
End
Wenn ich den Sensor nicht angeschlossen hab bekomme ich 0.0 Grad ansonsten 0.5 Grad (und so kalt ist es hier auch nicht)