Bascom Beispiel DS1621 Temperaturabfrage
So gehts bei mir
'----------- Temperatur abfragen --------------------------------
Sub Thermometer()
Local Device As Byte
Device = &H90
Local Deviceread As Byte
Local Lowtemp As Byte
Local Hightemp As Byte
Deviceread = Device + 1
I2cstart
I2cwbyte Device
I2cwbyte &HEE 'Temperaturmessung anstoßen
I2cstop
I2cstart
I2cwbyte Device
I2cwbyte &HAA 'Temperaturmessung Lesekommando
I2cstop
I2cstart
I2cwbyte Deviceread
I2crbyte Lowtemp , Ack 'LSByte holen
I2crbyte Hightemp , Nack 'MSByte holen
I2cstop
Temperatur = Lowtemp * 10
If Hightemp = 128 Then
Temperatur = Temperatur + 5
End If
Temperatur = Temperatur / 10
End Sub
'Ende -------------- Temperatur ----------------------------------------
Programm richtig, vermutlich falsch verlötet
Hallo,
Dein Programm ist richtig. Genau so läuft es bei mir auch.
Wenn Du immer 255, 65535 oder 0 als Antwort bekommst, so liegt dies ziemlich sicher an deiner Verlötung oder einer falschen I2C-Adresse.
Also prüfe nochmals folgende Punkte:
1) Hast Du irgenwelche Pins vertauscht SCL mit SDA
2) Hast Du 5V und GND auf dem Chip /I2C_Bus.
Falls du RN-Control hast, ist der 5V Jumper und der I2C Jumper gesteckt?
3) Ja HEX90 heisst alle A0-A2 auf GND
Übrigens: 0,255,65535 (je nach I2C-Chip) heisst eigentlich immer, daß das Programm den Baustein nicht gefunden hat.
Mehr Ferndiagnose geht leider nicht.
Gruß
Zur Sicherheit nochmals das Datenblatt
http://pdfserv.maxim-ic.com/en/ds/DS1621.pdf