Hallo, wollte einen DS1621 über I2C ansteuern. Da ich nicht zurecht kam mit dem I2C in Hardware (M30245FCGP), habe ich mir die nötigen Softwareroutinen geschreiben. Nun zeigt mein Temperatursensor merkwürdiges Verhalten: Wenn ich versuche ihm die Temperatur zu entlocken, lese ich nur Einsen. Das T_h Register = 0xff und das T_l = 0x80 Bin zu 99% überzeugt, dass meine I2C Routinen funktionieren, denn: -Bekomme ein ACK, immer dann wenn ich es auch erwarte. -Ändere ich die Adresse des Slave, so gibt es kein ACK -Schreibe ich Werte in die Thermostatregister, so kann ich die selben auch wieder auslesen. -Ich bin auch in der Lage das Konfigurationsregister auszulesen Die einzige Sache die nicht klappt, ist das Auslesen der korrekten Temperatur. Ich vermute allerdings, dass der Lesevorgang in Ordnung ist, da sich alle anderen Register wunderbar auslesen lassen. Habe sogar zwei verschiedene DS1621 ausprobiert, die jedoch gleiches Verhalten zeigen. Ist jemandem schonmal soetwas passiert? Kann es sein, dass beide IC´s kaputt sind? Falls Ihr wollt, kann ich meine Routinen posten, doch bin ich "fast" überzeugt, dass sie einwandfrei sind. Naja, vielleicht findet sich jemand mit ähnlichen Erfahrungen. Bis dahin, guten Abend. stowoda
Moin auch... So siehts aus: -start -sende 0x90 (Adresse des IC: 000, Schreiben) -ACK vom IC -sende 0xEE -ACK vom IC -stop -start -sende 0x91 (Lesen) -ACK vom IC -sende 0xEE -ACK vom IC -lese T_high -lese T_low -stop Nun habe ich herausgefunden, dass zwischen den beiden Blöcken (oben) ein restart muss anstelle von stop und start. Siehe da, es funktioniert.. Also danke, dass Du mich auf die richtige Spur gebracht hast. :) So führt es nun zum gewünschten Ergebnis: -start -sende 0x90 (Adresse des IC: 000, Schreiben) -ACK vom IC -sende 0xEE -ACK vom IC -restart -sende 0x90 (Schreiben) -ACK vom IC -sende 0xAA -ACK vom IC -restart -sende 0x91 (Lesen) -ACK vom IC -lese T_high -lese T_low -stop Wahrscheinlich ist das noch nicht optimal ^^ werde mal schauen worauf es wirklich ankommt. Eine Frage hätte ich noch: wenn der DS1621 eingeschaltet wird, also siene Betriebsspannung bekommt; fängt er automatisch an zu messen oder muss ich ihn mit 0xEE erst starten ? Grüße stowoda
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.