Hallo! Ich habe ein kleines Problem mit meinem DS1624. Habe ihn soweit verdrahtet und bin mir nicht sicher welche Adresse er nun besitzt. Habe A0 - A2 auf Masse gelegt. Sind dann die Eingänge 0 oder 1. Kann dies leider nirgends aus dem Datenblatt herauslesen. Ich habe nun folgende Adressen schon ausprobiert: 1001 (feste Adresse von Maxim) 000 (für A0 -A2) = 0x90 1001 (" - ") 111 (" - ") = 0x9E Allerdings funktioniert es nicht. Mein I²C-Bus funktioniert aber, da ich mein LCD ea-Dip320 darüber ansprechen kann. Wäre super wenn mir jemand weiterhelfen könnte. Gruß Thomas
Die 0x90 sind ok (Masse=Low=0). Du hast ein anderes Problem. Stimmt bei Dir das read-Protokoll (DB Seite 5) ? Also so etwa: Start Write Adress Write protocol (Z.B. AAh für ReadTemp) Restart Read Adress Read Data1 Read Data2 Stop
Mein Code schaut wie folgt aus (DS1624.h):
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
Normal ist diese Reihenfolge gleich deiner. Und so war es ja auch im Datenblatt beschrieben. Gruß Thomas
Ich würde statt temp_msb = i2c_readAck(); temp_lsb = i2c_readAck(); dummy = i2c_readNak(); i2c_stop(); eher temp_msb = i2c_readAck(); temp_lsb = i2c_readNak(); i2c_stop(); schreiben. Was funktioniert denn nicht ? Wie sieht das Fehlerbild aus ?
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.