Archiv verlassen und diese Seite im Standarddesign anzeigen : integer im I2C EEprom speichern ?
stefan1275
06.03.2006, 17:18
Hy,
Habe ein Problem da man im I2C EEprom nur bytes speichern kann. Muß ich also die integer in 2 Bytes aufteilen und dann die Bytes ins EEProm nach einander senden.
Nun Mein Problem :
wie löst man das elegand in C einmal das aufteilen und wenn ich es wieder auslese die beiden Bytes wieder in ein Integer zurück wandeln.
ich kenns von bascom mit shift
also erst den lowbyte in ein bytevariable,
dann shift right 4
dann wieder lowbyte in bytevariable (das wär dann ehemals der highbyte)
stefan1275
07.03.2006, 17:09
Genau Danke. Und wie gehts dann umgekehrt ?
so vielleicht ?
uint16_t word = (highbyte<<8 ) + lowbyte;
Gruß Sebastian
Edit Quatsch: so müßte es gehen,
word = lowbyte;
word += (highbyte<<8 );
P.S. man sollte erst denken, und dann posten
Da fällt mir noch was ein, eine Union sollte noch besser dafür geeignet sein...
Gruß Sebastian
@izaseba:
Die beiden Lösungen die du geschrieben hast bewirken genau das gleiche!
mfg skillii
Die beiden Lösungen die du geschrieben hast bewirken genau das gleiche!
Das heißt ?
Beides daneben, oder beides richtig ?
Gruß Sebastian
Glaube schon, dass beide richtig sind!
Kann sein, dass es ein problem gibt wenn lowbyte und highbyte vom typ unsigned char sind.
Abhilfe: vor dem shiften nach unsigned int casten.
ja, genau, beides richtig,
habe gerade mal kurz kompiliert, beide Lösungen führen zum richtigem Ergebnis.
Ich glaube der Compiler castet die schon automatisch, sonst hätte ich gedacht, daß ich bei den High Byte immer 0 rausbekomme.
Gruß Sebastian
SprinterSB
08.03.2006, 14:02
Rumshiften braicht man eigentlich nicht.
Guckst du hier (https://www.roboternetz.de/wissen/index.php/Avr-gcc#Daten_zerlegen.2Fzusammensetzen).
Ja genau, eine union, hab ich schon oben gesagt.
Gruß Sebastian
Naja, aber für solche kleinen Sachen mache ich auch keine eigene Union....
Naja, aber für solche kleinen Sachen mache ich aber auch keine eigene Union....
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.