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:
Programm 2Code:$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"
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 ')







Zitieren
Hoffentlich liegt das Ziel auch am Weg 

Lesezeichen