Hallo, ich versuche verzweifelt einen LM75 anzusteuern.
Auf dem RPI unter Linux funktionierd das Prima, unter Bascom scheitert er jedoch schon beim i2cstart.
Leider findet sich weder in google noch in der Bedienungsanleitung irgendein Hinweis was hier falsch läuft.
Ich hab keine Ahnung was ich noch machen soll.
Code:
$regfile "m88def.dat"

'Angabe der Taktfrequenz (8Mhz)
$crystal = 8000000
$baud = 9600

'Einbindung der I2C-Bibliothek
$lib "i2c_twi.lbx"

'Angabe der I2C-Bus-PIN´s (mit i2c_twi.lbx nicht veränderbar!)
Config Sda = Portc.4
Config Scl = Portc.5

Config TWI = 100000
'Konfiguration der Ports
Config Portd = Output

Dim I2c_state As Bit

Dim N As Byte

'Variablen für Temperaturmessung LM75 Basis-Adresse Hex 90/91 (=144/145)
Const Lm75slavewrite = &H48
Const Lm75slaveread = &H49
Dim Lm75high As Byte
Dim Lm75low As Byte
Dim Temperatur As Integer
Dim Nachkommastelle As String * 2


'Anschaltung des I2C-Busses
I2cinit
Print Err;
'======================================================
'Hauptprogramm-Schleife
'======================================================
Do

   'LM75 Abfrage
   I2cstart
   If Err = 1 Then Print "Error starting TWI";
   I2cwbyte Lm75slaveread
   Print Err
   If Err = 1 Then Print "Error Writing address\nIs the device connected ?";
   I2crbyte Lm75high , Ack
   If Err = 1 Then Print "Error reading High byte";
   I2crbyte Lm75low , Nack
   If Err = 1 Then Print "Error reading Low byte";
   I2cstop

   Print Err
   Print Lm75high ; Lm75low

   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
   Print "Temp.: " ; Temperatur ; Nachkommastelle ; " Grad"

'Status-Life-Bit für Hauptprogramm
Toggle Portd.0
Waitms 500

Loop



'Programmende (nur formal)
End
MFG Thalhammer