-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: integer im I2C EEprom speichern ?

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    04.07.2004
    Beiträge
    12

    integer im I2C EEprom speichern ?

    Anzeige

    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.

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    43
    Beiträge
    2.240
    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)
    Vor den Erfolg haben die Götter den Schweiß gesetzt

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    04.07.2004
    Beiträge
    12
    Genau Danke. Und wie gehts dann umgekehrt ?

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    45
    Beiträge
    2.236
    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

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    45
    Beiträge
    2.236
    Da fällt mir noch was ein, eine Union sollte noch besser dafür geeignet sein...

    Gruß Sebastian

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    17.01.2005
    Ort
    Obertraun
    Alter
    29
    Beiträge
    194
    @izaseba:

    Die beiden Lösungen die du geschrieben hast bewirken genau das gleiche!

    mfg skillii

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    45
    Beiträge
    2.236
    Die beiden Lösungen die du geschrieben hast bewirken genau das gleiche!
    Das heißt ?
    Beides daneben, oder beides richtig ?

    Gruß Sebastian

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    17.01.2005
    Ort
    Obertraun
    Alter
    29
    Beiträge
    194
    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.

  9. #9
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    45
    Beiträge
    2.236
    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

  10. #10
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.801
    Rumshiften braicht man eigentlich nicht.
    Guckst du hier.
    Disclaimer: none. Sue me.

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •