HYT271 blockiert I2C-Bus

OP #2219474
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
Gast #2220111
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...
Gast #2220119
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).
Gast #2220137
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.
OP #2220616
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

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.