Hallo Leute,
Hab schon in ganzen Forum geschaut aber leider hat bis jetzt noch keiner so was geschrieben!

Habe an einem ATmega8-16 einen DS18B20 1-Wire Temperatursensor angeschloss, leider bekomme ich aber nicht den richtigen Wert von dem Sensor. Wenn ich den Sensor länger in der Hand halte zeit er mehr als 100 Grad an. Kann es sein, dass sich der Sensor selber aufheitzt, denn heute früh wurde die Reumtemperatur angezeit und nach ein paar Secunden ist sie wieder auf mehr als das doppelte angestiegen.

Den verwendeten Code habe ich aus der Elektor Zeitschrift:

Code:
$regfile = "m8def.dat"
$baud = 19200
$hwstack = 32
$swstack = 32
$framesize = 32
$crystal = 8000000

Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5
Config Lcd = 16 * 2
Cls

'Config Portd.5 = Output                                     'LED 1
'Portd.5 = 1
'Led1 Alias Portd.5
'Config Portd.6 = Output                                     'LED 2
'Portd.6 = 1
'Led2 Alias Portd.6
'Config Portd.7 = Output                                     'LED 3
'Portd.7 = 1
'Led3 Alias Portd.7
'Config Portd.2 = Output                                     'Motor1, Pin 1 und 2 am Motorboard
'Portd.2 = 0
'Config Pinb.0 = Input                                       'Taster 1
'Portb.0 = 1
'Taster1 Alias Pinb.0
'Config Pinb.1 = Input                                       'Taster 2
'Portb.1 = 1
'Taster2 Alias Pinb.1
'Config Pinb.2 = Input                                       'Taster 3
'Portb.2 = 1
'Taster3 Alias Pinb.2

Config 1wire = Portd.2

Dim Rom(8) As Byte
Dim Temp1 As Single
Dim Temp2 As Single
Dim Tempdif As Single
Dim Id1(8) As Byte
Dim Id2(8) As Byte
Dim I As Integer

Id1(1) = 1wsearchfirst()
Id2(1) = 1wsearchnext()

I = 1wirecount()
Lcd I

For I = 1 To 8
   Locate 1 , 1
   Lcd Hex(id1(i));
Next
For I = 1 To 8
   Locate 2 , 1
   Lcd Hex(id2(i));
Next

Wait 1

Do

1wreset
1wwrite &HCC

   1wwrite &H44
   Ddrd.2 = 1
   Waitms 800
   Ddrd.2 = 0

   1wreset
   1wwrite &H55

      For I = 1 To 8
         1wwrite Id1(i)
      Next I
      1wwrite &HBE

      Rom(1) = 1wread(1)
      Temp1 = Rom(1) / 2
      Locate 1 , 4
      Lcd "T1: " ; Temp1


      1wreset
      1wwrite &H55

      For I = 1 To 8
         1wwrite Id2(i)
      Next I
      1wwrite &HBE

      Rom(1) = 1wread(1)
      Temp2 = Rom(1) / 2
      Locate 2 , 4
      Lcd "T2: " ; Temp2



Loop


End
Ich Verwende ein externes Crystal und die Fusebits hab ich auch richtig eingestellt!

Hat von euch jemand eine Idee woran das liegen kann?

Gruss Douser