Hey Ich hoffe Ihr könnt mir weiterhelfen.
Ich wollte an meinen Atmega644p einen LM75 Temperatur sensor abfragen
und bin seit 2 Tagen am verzweifeln.
Der LM75 ist über I²C an meinem Mega644p angeschlossen.
Ich bekommen zwar über mein programm einen wert nur ist dieser immer bei
125 Grad. Woran kann das liegen ?
Ich habe schon folgendes geprüft:
-PullUp Widerstände 1k5 bzw. 4k7 gegen 5Volt
-Adresse ist richtig A0-A2 sind gegen Masse
mein Code
1 | $regfile = "m644pdef.dat"
|
2 | $crystal = 16000000
|
3 | '$sim 'Frequenz 16MhZ
|
4 | $baud = 2400 'Baudrate Com1 zum PC
|
5 | $baud1 = 2400
|
6 | $timeout = 20000000 'Timeout für Serial In 10 Sekunden
|
7 | $hwstack = 90
|
8 | $swstack = 64
|
9 | $framesize = 64
|
10 | '$lib "i2c_twi.lbx"
|
11 | Config Twi = 100000
|
12 |
|
13 | Const Lm75slavewrite = &H90
|
14 | Const Lm75slaveread = &H91
|
15 | Dim Lm75high As Byte
|
16 | Dim Lm75low As Byte
|
17 | Dim Temperatur As Integer
|
18 | Dim Nachkommastelle As String * 2
|
19 |
|
20 | Dim N As Integer
|
21 | N = 5
|
22 | I2cstart
|
23 | I2cwbyte Lm75_adresse
|
24 | I2cwbyte &H00
|
25 | I2cstop
|
26 | Waitms 100
|
27 | Do
|
28 | I2cstart
|
29 | I2cwbyte Lm75slaveread
|
30 | I2crbyte Lm75high , Ack
|
31 | I2crbyte Lm75low , Nack
|
32 | I2cstop
|
33 |
|
34 |
|
35 | If Lm75high > 127 Then
|
36 | Temperatur = Lm75high And 127
|
37 | Temperatur = Not Temperatur
|
38 | Incr Temperatur
|
39 | Else
|
40 | Temperatur = Lm75high
|
41 | End If
|
42 |
|
43 | Lm75low = Lm75low And 128
|
44 | If Lm75low > 0 Then
|
45 | Nachkommastelle = ",5"
|
46 | Else
|
47 | Nachkommastelle = ""
|
48 | End If
|
49 | Locate 2 , 11
|
50 | Lcd " "
|
51 | Locate 2 , 11
|
52 | Print #2 , "Temp.: " ; Temperatur ; Nachkommastelle ; " Grad"
|
53 | N = N - 1
|
54 |
|
55 | Loop Until N < 0
|
langsam glaub ich dass Ich entweder doof bin oder der LM75 hin ist