Ich bin nicht ganz schlüssig, wie ich in eine I2C-EEPROM schreiben soll. Hab mir die Routinen von P. Fleury dazu angesehen und da war auch ein Beispiel dabei. Allerdings braucht das von mir verwendete EEProm zwei Adressbytes. Ich bin mir jetzt nur nicht ganz sicher, ob man nun das höherwertige Byte zuerst senden muss, oder das niederwertige... void eeprom_writebyte(uint16_t addr, uint8_t value) { i2c_start_wait(Dev24C256+I2C_WRITE); // Device auswählen zum Schreiben i2c_write(addr&0xFF); // Adresse Lo-Byte i2c_write((addr&0xFF00)>>8); // Adresse Hi-Byte i2c_write(value); i2c_stop(); }
Ich weiss es auch nicht, aber ich würde einfach mal im Datenblatt nachlesen...
Danke für diesen hilfreichen Tipp. Da hab ich natürlich bereits nachgesehen, leider reden die da aber nur von Bits, im speziellen von MSB und LSB. Und zwar kommt das MSB zuerst.
Moin, ich hatte das gleiche Problem und "glaube", dass dies eine Lösung ist. Dabei soll zuerst die ersten 8 Bits übertragen und dann die letzten 8 Bits. Die Routinen stammen von Fleury und sind nur modifiziert. Falls die "Aufteilung" der 16 Bits in zwei mal 8 Bits nicht stimmt bitte ich um Rückmeldeung. Bis dann Matthias
Denke mir auch das das höherwertige Byte zuerst kommt, wie in deinem Quelltext. Im Test funktioniert es auf jeden Fall. Hab dazu aber nicht extra die Quelle umgeschrieben, sondern sende einfach zwei Bytes nachein ander.
"leider reden die da aber nur von Bits, im speziellen von MSB und LSB. Und zwar kommt das MSB zuerst." Da hast Du doch die Antwort: Das MSB einer 16-Bit Adresse ist nun einmal im oberen Byte und das LSB im unteren.
Wenn man significant mit Wertigkeit übersetzt kann man so drauf kommen. Nur bin ich der Meinung, das es eher Bedeutungsvoll heisst...
Standard-Wörterbuch benutzt? Die sind in dieser Branche nur bedingt hilfreich. Die Bedeutung des Begriffs MSB ist in der DV dankenswert eindeutig. Auch bei Prozessoren, deren Bit 0 links und Bit 31/63 rechts liegt (z.B. PowerPC), ist MSB links.
Wenn Bit 0 das MSB ist, widerspricht das doch wiederum der Definition, oder? http://dict.leo.org/?search=most+significant+bit
Wieso? Auf PowerPC hat das Bit 0 den höchsten Stellenwert, Bit 63 den geringsten, die Bitnummer ist einfach nur eine Nummer, kein Stellenwert. Die Arithmetik hat IBM ja nicht neu erfunden, nur die Nummerierung ist anders. Generell landet man leicht in Teufel's Küche, wenn man zwar das oberste Byte aber das unterste Bit mit 0 numeriert (umgekehrt auch, das ward aber noch nicht gesichtet). Motorola hatte das bei 68000 verbrochen und durfte beim 68020 deshalb umnummerieren - alte Bit-Befehle rechts nach links, neue Bitfeldbefehle links nach rechts.
OK, kapiert... Ich bleibe dann doch lieber dabei, dass das MSB auch den höhsten Zähler hat, das wirkt dann auch logischer... ;-)
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.