Forum: Mikrocontroller und Digitale Elektronik HYT271 blockiert I2C-Bus


von Frank B. (frank13)


Lesenswert?

Hallo allerseits!

Ich beschäftige mich gerade mit dem HYT 271 und habe ein etwas kurioses
Problem:
Wenn ich per I2C an die Adresse 0x28 (Sensoradresse) schreibe, bleibt 
der gesamte Bus hängen. Der HYT scheint den SDA dauerhaft auf Masse zu 
ziehen.
Die Adresse wird korrekt übertragen und der ACK wird vom Sensor 
gesendet, aber halt nur "unendlich lange".
Wenn ich den Pin abnehme, läuft der Bus weiter. Wenn ich eine andere 
Adresse beschreibe, läuft auch Alles. Da Lesen funktioniert auch, nur 
die Werte passen logischerweise nicht.
Hat da jemand eine Idee woran das liegen könnte?
Ich nutze den MSP430F2112 mit 10kOhm auf SDA und SCL.

Viele Grüße

Frank

von u5thf6ij (Gast)


Lesenswert?

Hast Du noch einen HYT271, dann teste das mal mit dem, um einen 
Bauteildefekt auszuschließen.

Ansonsten tippe ich eher auf fehlerhafte I2C-Kommunikation mit dem 
Baustein, so dass dieser hängen bleibt und den Bus blockiert.

Woher weisst Du, dass das Addressieren sauber funktioniert? Das Lesen 
scheint ja auch nicht zu funktionieren.

Was hier sehr helfen würde, wäre ein Oszilloskop mit I2C-Analyser. Aber 
das wirst Du wahrscheinich nicht zur Verfügung haben.

Ich hatte auch mal ein ähnliches Problem und mit dem Oszilloskop konnte 
man sofort die Protokollfehler sehen und der Fehler nach insgesamt einer 
Stunde behoben werden. Mit Ausprobieren hatte ich mich zwei Tage lang 
geärgert und damit mein Wochenende versaut...

von u5thf6ij (Gast)


Lesenswert?

Wenn das ein 3V3-I2C-Bus ist, dann würde ich übrigens eher 
1k5-Widerstände als PullUp empfehlen. Laut I2C-Spezifikation sind noch 
100Ohm-Widerstände zu allen Busteilnehmern empfohlen (wahrscheinlich 
sogar wärmstens empfohlen oder vorgeschrieben).

von u5thf6ij (Gast)


Lesenswert?

Das Datenblatt vom Hersteller ist auch sehr dürftig. Da steht noch nicht 
mal drin, wie man mit dem Ding über I2C kommuniziert.

0x28 soll die I2C-Adresse sein = 101000b. Gehen wir mal davon aus, dass 
das Teil eine normale 7-Bit-Adresse hat, gibt es jetzt dummerweise 
insgesamt vier Möglichkeiten, was gemeint ist.

Laut Nomenklatur wäre dann die Adresse plus R/W-Bit:

1a) 1010000b = Adresse plus 0 für Schreibzugriff
1b) 1010001b = Adresse plus 1 für Lesezugriff

oder falsch gemeint:

2a) 101000b = inklusive 0 für Schreibzugriff
2b) 101001b = inklusive 1 für Lesezugriff.

Gehen wir mal erst von Möglichkeit 1a und 1b aus.

Sowas erwarte ich in einem ordentlichen Datenblatt beschrieben zu haben.
Schön bunt ist das ja, es fehlt aber einiges, vor allem in Richtung 
Kommunikation.

von Frank B. (frank13)


Lesenswert?

Hallo allerseits!

Ich habe den Fehler mittlerweile gefunden: Meine CPU hatte schlicht eine 
Macke weg. Mit einer identischen Austausch-CPU geht es.
Die hat beim ACK vom Sensor den SCK gestoppt. Die Möglichkeit ist im 
MSP430 vorgesehen, ich hatte die Option aber deaktiviert. Nur scheint da 
das Bit im entsprechenden Register in der CPU "festzuhängen".
Egal, neue CPU und es geht!

Vielen Dank für die Hilfe!

Viele Grüße

Frank

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.