Ich hoffe Ich habe nun das richtige Forum ausgewählt.

zu meinem Problem. Ich wollte mit meinem Atmega644p über I²C einen LM 75 auslesen.
soweit klappt dass auch aber Ich erhalte immer nur 125 Grad. Woran kann dass liegen ?

Ich habe schon folgendes Probiert:
- Programm geändert ( mittlerweile 2 verschiedene Programme getestet )
- PullUp widerstände am Bus geändert ( 1k5,4k7,10k )
- anderen LM75 getestet

meine Programme bisher:
Code:
$regfile = "m644pdef.dat"
$crystal = 16000000
'$sim                                                        'Frequenz 16MhZ
$baud = 2400                                                'Baudrate Com1 zum PC
$baud1 = 2400
$timeout = 20000000                                         'Timeout für Serial In 10 Sekunden
$hwstack = 90
$swstack = 64
$framesize = 64
'$lib "i2c_twi.lbx"
'Config Twi = 100000
Dim I2c_state As Bit
Dim Hightemp As Byte
Dim Lowtemp As Byte
Dim Temperatur As Single
Const Lm75slavewrite = &H90
Const Lm75slaveread = &H91
Dim Lm75high As Byte
Dim Lm75low As Byte
'Dim Temperatur As Integer
Dim Nachkommastelle As String * 2
Dim I As Integer
 Waitms 100
 I2cstart
 I2cwbyte Lm75_adresse
 I2cwbyte &H00
 I2cstop
 Waitms 100
 I2cstart
 I2cwbyte Lm75_lese_adresse
 I2crbyte Hightemp , Ack
 I2crbyte Lowtemp , Nack
 I2cstop

 Print #2 , "high:" ; Hightemp
 Print #2 , "Low:" ; Lowtemp.7

 Waitms 100
 If Hightemp.7 = 1 Then
   Decr Hightemp

   For I = 0 To 7
    Toggle Hightemp.i
   Next

   Temperatur = -hightemp
 Else
 Temperatur = Hightemp
 End If


 Locate 3 , 1
 Lcd "Erfolgreich"
 Locate 4 , 4
 Lcd Temperatur ; " °C"
 Print #2 , Temperatur ; "°C"
Programm 2
Code:
'(I Dim N As Integer
 N = 5
 I2cstart
 I2cwbyte Lm75_adresse
 I2cwbyte &H00
 I2cstop
 Waitms 100
 Do
   I2cstart
   I2cwbyte Lm75slaveread
   I2crbyte Lm75high , Ack
   I2crbyte Lm75low , Nack
   I2cstop


   If Lm75high > 127 Then
      Temperatur = Lm75high And 127
      Temperatur = Not Temperatur
      Incr Temperatur
   Else
      Temperatur = Lm75high
   End If

   Lm75low = Lm75low And 128
   If Lm75low > 0 Then
       Nachkommastelle = ",5"
   Else
      Nachkommastelle = ""
   End If
   Locate 2 , 11
   Lcd "                "
   Locate 2 , 11
   Print #2 , "Temp.: " ; Temperatur ; Nachkommastelle ; " Grad"
   N = N - 1

 Loop Until N < 0
'End If

'Der I2C-Bus liefert ein ERR-Bit bei Schreibfehler
If Err = 1 Or I2c_state = 0 Then
   Print #2 , "Fehler I2C Bus"
End If
')