Hi, ich hab meiner Schaltung einen DS3231 Bautein, den ich als RTC verwenden wollte, gegönnt. Im Datenblatt steht nichts über die I2C Adresse des Bausteins, auch keine Möglichkeit zum Einstellen einer Adresse. Das ist mir jetzt schon bei mehreren Bausteinen aufgefallen, wie funktioniert das ganze ohne Adresse? Gruß Helmut K.
Zitat Datenblatt: The slave address byte contains the 7-bit DS3231 address, which is 1101000, fol- lowed by the direction bit (R/W), which is 1 for a read. Also D0 für Write und D1 für Read.
gefunden! war auch falsch in Code Schnipseln über 3231. Das wurde wohl nie ausprobiert. Da kann man sich als Anfänger ja totsuchen. "The i2c address for the DS1307 RTC is 0x68"
Die Adresse ist 0x68. Für die Übertragung wird sie einmal nach links geschoben und das R/W Bit wird angehängt. Macht 0xd0 bzw 0xd1. So ist es Standard bei allen I2C Bausteinen.
Volker Block schrieb: > was denn nun? 68 oder d0? Da gibt wohl Unklarheiten, ob zuerst das MSB oder LSB übertragen wird.
schrieb schrieb schrieb schrieb: > Volker Block schrieb: >> was denn nun? 68 oder d0? > > Da gibt wohl Unklarheiten, ob zuerst das MSB oder LSB übertragen wird. Ich nehme das zurück und verweise auf Beitrag "Re: DS3231 I2C Adresse?"
Zuerst wird die Device Adresse übertragen, damit der Partner die Ohren auf lässt und nach dem R/W Bit reagiert.
Volker Block schrieb: > was denn nun? 68 oder d0? Alter Schwede, was hindert dich denn daran, selbst im Datenblatt nachzulesen? Digitale Elektronik geht nun mal nicht ohne LESEN. schrieb schrieb schrieb schrieb: > Da gibt wohl Unklarheiten, ob zuerst das MSB oder LSB übertragen wird. Die Address-Übertragung ist bei I2C doch immer MSB first. MGNOR
Aber AChtung: Wenn eine I2C Lib verwendet wird, dann sollte man sich erst mal schlau machen (notfalls im Code), welche Form von der Lib verlangt wird. Die Adresse, so wie sie im Datenblatt steht (also die 0x68), oder bereits die um 1 Bit nach links verschobene Version (0xD0 bzw. 0xD1), in der Bit0 für die RW Kennung bereits frei gemacht wurde. Das ist im Prinzip kein großes Problem, allerdings kann einem die falsche Form den ganzen Tag versauen.
:
Bearbeitet durch User
Karl Heinz schrieb: > Aber AChtung: > Wenn eine I2C Lib verwendet wird, dann sollte man sich erst mal schlau > machen (notfalls im Code), welche Form von der Lib verlangt wird. das Gleiche gilt auch für den Eintrag im Datenblatt, auch hier habe ich schon beide Formen gesehen und hinterher verzweifelt den Fehler gesucht. Aber vielleicht muss man wenn man den I2C verwendet auch einmal in diese 'Falle' tappen um sich für sowas zu sensibilisieren ... Chris
juhu, Uhr läuft. Mit selbstgeschriebenen Bit Bangs in Bascom (was natürlich etwas überflüssig ist, gibt ja fertige Routinen) Danke nochmal.
Auch lustig wenn es als Modul gekauft wurde und dort die falsch Adresse im Beipackzettel steht aber trotzdem immer wieder mal scheinbar korrekte Werte reinkommen. Hab so ein Ding irgendwann mal bestellt und gerade beim aufräumen drübergestolpert -> ausprobiert, mit falscher Addresse aus dem Beipackzettel. Eine Stunde sass ich da gerade dran, Kabel gecheckt, ... endlos Debugcode reingekloppt,... gegoogelt, hier draufgestossen, 0x68 ausprobiert -> läuft! AAAAARGH!
> Eine Stunde sass ich da gerade dran, Kabel gecheckt, ... endlos Debugcode > reingekloppt,... gegoogelt, hier draufgestossen, 0x68 ausprobiert -> > läuft! AAAAARGH! Sowas hatte ich auch schon, allerdings hatte ich damals die geniale(tm) Idee, den kompletten Bus einmal durch zu adressieren anstatt zuerst die Hardware zu prüfen. Alle Adressen, die mit einem ACKs reagiert haben wurden dann auf der seriellen Schnittstelle ausgegeben. Die entsprechende Firmware habe ich nie wieder gelöscht :) Ralf
Ein Datenblatt ist durch nichts zu ersetzen, schon gar nicht durch einen "Beipackzettel" :-)
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.