Hi Community... Laut Datenblatt des Sensors, kann dieser unter gewissen Umständen nicht nur auf seine eigene, sondern auch auf sämtliche andere I²C-Adressen hören. Dies ist abhängig von den Comm_lock bits im Register Cust_conf des auf dem Sensor verwendeten Signalconditioner. Mein Problem ist, dass genau diese Bits eben nicht gesetzt sind und der Sensor mir in die I²C-Kommunikation permanent reinquatscht. Ich muss also diese bits setzen. hier das Datenblatt zum Signalconditioner: http://www.servoflo.com/downloads/ZSSC3122-datasheet.pdf Nun steh dort, ab Seite 42 genau beschrieben wie man hierbei vorgehen muss . Um es mal stichpunktartig wider zu geben müsste es so laufen : 1. Sensor einschalten 2. START_CM innerhalb von 10 oder 3ms senden (standart 10ms) 3. START | I²C Adr. + 0 (write) | 0x02 (Cust_Conf-Register) | MSB | LSB | STOP beim rücklesen dann START | I²C Adr. + 0 (write) | 0x02 | 0x00 | 0x00 | STOP START | I²C Adr. + 1 (read) | byte1 | byte2 | byte3 | STOP Mein Problem ist, das das Schreiben des Registers scheinbar einwandfrei funktioniert. Selbst die vom Sensor zurückgegebenen Status und Controllbits deuten auf keinen Fehler hin. Beim Rücklesen des Registeres allerdings, steht immer noch der selbe Wert wie vor dem Schreibvorgang drin. Ich habe hier schon einige Post über diese Sensoren gelesen, auch welch die sich auf das Änder der Adresse beziehen. Vielleicht hat ja jemand von euch auch schonmal derartige Probleme mit diesen Sensoren gehabt ?! Im Anhang seht ihr den Mitschnitt vom Schreib- bzw. Lesevorgang. Kurz zur info: MSB first! #1: START_CM Commando #2: möchte das register 0x02 auslesen #3: Datafetch für reg. 0x02. 81 = Statusbits. 0x08 = Bit 8-15; 0x07 = Bit - 7 #4: schreibe ins reg. 0x02 0x0B als MSB und 0x07 als LSB #5 - #6: selbes spiel wie mit #2 und #3 #7: Command mode verlassen Wie zu sehen ist, müssten in Packet #6 die zuvor geänderten Bytes drin stehen.... tun sie aber nicht. Wie gesagt, eventuell kennt jemand die Tücken dieses Sensors und ist schonmal über den selben Stein gestolpert. Vllt habe ich auch nu rwas im DS überlesen. Würde mich auf alle Fälle freuen wenn mir jemand auf die Sprünge helfen könnte. MfG Konrad PS: die EEPROM_lock bits sind auch nicht gesetzt.(reg. 0x02; zweites Byte; bit 5-7 = 000) Es muss also beschreiben gehen.
Hallöchen habe mit diesen Sensoren das problem die adresse zu ändern...muss wenigstens 4 stück am I2c Bus betreiben...... Habe mal einen Pyton scrip gefunden, sieht für mich wie ne schlecht wetterfront aus ^^..... Gruß Stefan
ok, da ich selbst nun mein problem behoben habe kann ich es mir ja leisten auf deinen Post zu antworten ;-) Ich nehme an du möchtest die Sensoren an einem uC betreiben. Von daher vergess das PhytonScript und programmiere die Sensoren per I²C um. Das ausführlichere Datenblatt findest du hier: http://www.zmdi.com/index.php?eID=tx_nawsecuredl&u=0&file=uploads/tx_tdoinfodownload/ZSSC3122_cLite_Data_Sheet_rev_1_10_2011-06-29.pdf&t=1312662884&hash=23183a4774d11233cff7c13fa19f5f015c7d87d1 Ab seite 42 beginnenn die Beschreibungen die du brauchst. MfG Konrad
moin Konrad super Danke, nur bin ich leider nicht der Meister auf dem gebiet der i2c Programierung, fummele auch nur mit Bascom rum.... Könntest Du mir da e.v. ein wenig auf die sprünge helfen ? Die Sensoren hängen an einem Atmega8, wenn es zu viel für den kleinen wird steht da schon ein mega32 in den startlöchern. Hauptaufgabe soll eigendlich nichts weiter sein als mehrere Terrarien zu messen. Wäre super wenn du mir helfen könntest. Gruß Stefan
Klar kann ich dir da helfen. Aber würde sagen wir machen das per e-mail. Mein Thread hier behandelt ja ein ganz anderes Problem. deine Adresse müsstest du mir noch posten ;-) Um ihn auch ab zu schließen.... Mein Problem lag darin dass ich ich in die selbe EEPROM Adresse schreiben wollte wie ich auch gelesen habe. Allerdings muss zum Schreiben von den Registern noch 0x40 draufaddiert werden. Zum lesen von 0x02 also einfach 0x02 auslesen. Zum Schreiben von 0x02 muss register 0x42 beschrieben werden.
He super..... meine e-mail: Dragon007atonline.de
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.