PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : LM75 i2c Temp-Sensor Beispiel aus RNWissen bringt immer 9999



CapSob
18.04.2007, 23:47
Hi folks!

Wollte mal Temperaturmessung mitm LM75 über i2c machen. Vorneweg, das ist mein erstes i2c-Projekt.

Mein Programm ist 1:1 aus RN-Wissen übernommen, klar, mit ein paar kleinen Änderungen.

Am LM75 hab ich die i2c-Pins (A1-A3) auf Masse gelegt, dadurch hab ich als Adresse &h90. Zum lesen dann &h91.

Im nachfolgenden kommt mein Bascom-Programm. Hoffe, ihr könnt den Fehler finden.

Achja, auf dem LCD gibt er die ganze Zeit "Temp.: 9999" aus.


$regfile = "m8def.dat"
$crystal = 16000000

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

Config Sda = Portc.4
Config Scl = Portc.5

Cursor Off Noblink

Do

Cls

Dim Ival As Integer
Dim Msb As Byte
Dim Lsb As Byte

I2cstart
I2cwbyte &H91 ' Lese-adresse !
If Err = 1 Then
I2cstop ' kein ACK vom LM75 --> irgendein Fehler
Ival = 9999 ' Zeichen, daß der Wert ungültig ist !
Else
I2crbyte Msb , Ack
I2crbyte Lsb , Nack
I2cstop
If Msb.7 = 1 Then
Ival = Makeint(msb , &HFF) ' auffüllen mit den Vorzeichen bits
Else
Ival = Makeint(msb , &H00) ' positiv, also bleibt es so
End If
Ival = Ival * 10 ' erweitern
If Lsb.7 = 1 Then
Ival = Ival + 5 ' fünf Zehntel Grad dazu
End If
End If

Locate 1 , 1
Lcd "Temp.: "

Locate 1 , 8
Lcd Ival

Wait 1

Loop

CapSob
22.04.2007, 10:40
Danke, hat sich erledigt.

Hier der Link der Lösung: https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=29857&highlight=