Forum: Mikrocontroller und Digitale Elektronik Hygrosens HYT271 I²C-Adresse / Comm_lock bits ändern


von Rush .. (rush)


Angehängte Dateien:

Lesenswert?

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.

von Stefan (Gast)


Lesenswert?

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

von Rush .. (rush)


Lesenswert?

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

von Stefan (Gast)


Lesenswert?

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

von Rush .. (rush)


Lesenswert?

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.

von Stefan (Gast)


Lesenswert?

He super..... meine e-mail: Dragon007atonline.de

von Rush .. (rush)


Lesenswert?

t-online oder einfach nur online.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
Noch kein Account? Hier anmelden.