Re: LM75 Tempsensor von Conrad funktioniert nicht am i2c Kategorie: I²C-Bus (von Mark - 21.09.2004 0:10) | ||
Als Antwort auf Re: LM75 Tempsensor von Conrad funktioniert nicht am i2c von André H. - 19.09.2004 14:05 | ||
| ||
moin funktioniert mittlerweile, das problem lag an einer fehlenden masseleitung. vielen dank für die infos! mfg > Hallo Mark, > > > wollte heute eigentlich nur ne ganz simple sache versuchen. den lm75 tempsensorchip von conrad > > mit i2c schnittstelle an mein ccontrol2 anschlie�en! > > > > http://www.produktinfo.conrad.com/datenblaetter/150000-174999/165883-da-01-en-lm_75.pdf > > > > um zu gucken an welcher addresse mein lm75 ist hab ich ne einfache schleife programmiert, die > > für jeden addresse überprüft was das i2c.start zurückliefert: > > > > for i=0 ... <255 > > { > > i2c.init(); > > result = i2c.start(i); > > string s; > > str.clear(s); > > str.putint(s,i); > > str.putstring(s,": RESULT = "); > > str.putint(s,result); > > str.putstring(s,"nr"); > > sendString(s); // über serielle schnittstelle ausgeben > > } > > > > leider bekomme ich überall den wert 0 zurück. > > jetzt weiss ich nicht ob ich das ding überhaupt richtig angeschlossen habe. stromversorgung > > addressierung ist soweit klar. was ist mit scl und sda ? werden die direkt 1 zu 1 auf den lm75 > > gesteckt? so hab ich das jedenfalls gemacht... > > > > was mach ich falsch? > > Du machst grundlegende Dinge falsch: > 1. Warum führst Du i2c.init() bei jedem Schleifendurchlauf aus ? > Man benötigt i2c.init() nur, wenn man die Ports vom I²C-Bus anderweitig "mi�braucht" hat. > I.d.R wird er I²C-Bus bei jedem Start des Programms systemseitig initialisiert. > 2. Wenn man i2c.start() ausführt mu� auch irgendwann einmal ein i2c.stop folgen. > Sonst wird das nichts. > 3. Um den I²C-Bus zu scannen, sollten nur die geraden Adressen verwendet werden ! > Die Addressen 0 und 1 sollten auch nicht verwendet werden, da dies Generall-Call Adressen sind ! > Aber, warum schlägst Du nicht einfach im Datenblatt des LM75 nach, um die Adresse zu erfahren. > Dort steht ganz deutlich drin, da� Der Baustein die Basisadresse 0b10010000 hat. (=0x90 bzw. 144) > > Und, wenn Du dennoch scannen willst, dann benutze bitte eine Routine nach diesem Schema: > > for i=2 ... 254 step 2 > { > hwcom.print("Addr: "); > hwcom.num(i); > hwcom.tab(); > hwcom.print("Ack.: "); > hwcom.num(i2c.start(i)); > i2c.stop(); > hwcom.ret(); > } > > MfG André H. > | ||
Antwort schreiben Antworten: |