Hallo,
ich versuche gerade bei einem LM75 (per I2C-Bus) die Temperaturschwellen
TOs und THyst zu ändern. Laut Datenblatt müsste das z.B. so gehen:
1 | bit a;
|
2 |
|
3 | I2C_Start(); //Startbedingung
|
4 |
|
5 | a = I2C_Write(0x9E); //Adresse zum Schreiben
|
6 | a = I2C_Write(2); //Adresse für THyst
|
7 | a = I2C_Write(17); //Wert 17 °C
|
8 | a = I2C_Write(0); //keine Kommastelle
|
9 |
|
10 | I2C_Stop(); //Stopbedingung
|
Die I2C_Write-Funktion dazu ist:
1 | bit I2C_Write(unsigned char byte){
|
2 |
|
3 | bit a;
|
4 | unsigned char ref = 0x80;
|
5 | int i;
|
6 |
|
7 | for(i = 0; i < 8; i++){
|
8 | if(byte >= ref){
|
9 | sda = 1;
|
10 | wait();
|
11 | byte -= ref;
|
12 | }else{
|
13 | sda=0;
|
14 | wait();
|
15 | }
|
16 | ref /= 2;
|
17 |
|
18 | scl=1;
|
19 | wait();
|
20 | scl=0;
|
21 | wait();
|
22 | }
|
23 |
|
24 | sda = 1;
|
25 | wait();
|
26 | scl = 1;
|
27 | a = !sda;
|
28 | wait();
|
29 | scl = 0;
|
30 |
|
31 | return a;
|
32 | }
|
Beim Auslesen bekomm ich immer nur die Defaultwerte, weiß jemand was ich
da falsch mache?