Hallo, ich habe mehrere 32 Bit Datenzellen, die je einen "Header" beinhalten, die ich zu Dutzenden ins EEPROM speichern will. Die Zelle ist wie gesagt 4 Bytes lang, der Header nutzt dabei die Bits 0 bis 6. Ich will nun nur das Byte mit dem Header auslesen. Wenn ich nun aufs erste Byte einer einzelnen Zelle über das Index des 32Bit Arrays zugreifen will: Betrifft mich dann überhaupt die Little / Big Endian - Problematik oder badet das der Compiler zuverlässig aus? Ich programmiere in C mit AVR Studio, nutze die GCC Toolchain. Targets sind diverse ATMegas (32, 2561 1281 etc.) Gruß Bernhard
Gast
#2055016
Ich würde mal sagen, daß die avr-libc Dir das abnimmt (sofern Du sie benutzt und auch beim Schreiben benutzt)
Ja nutze die eeprom_read & write funktionen aus der lib
Hallo, ich konkretisiere das gane mal mit ein bisschen Code:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
Geht das so? Wenn nein wie kann mans besser machen? Gruß Bernhard
Gast
#2056704
> uint16_t FirstByte = ^^^^^^^^ ^^^^ > eeprom_read_word((uint8_t*)&EEDesGraphsMemory[ZeigeaufDWord13]); ^^^^ ^^^^^^^ Was für ein Doppelkuddelmuddel mit Byte und Word! > ich habe mehrere 32 Bit Datenzellen, die je einen "Header" beinhalten, > die ich zu Dutzenden ins EEPROM speichern will. Die Zelle ist wie gesagt > 4 Bytes lang, der Header nutzt dabei die Bits 0 bis 6. Ich will nun nur > das Byte mit dem Header auslesen. Komplette Datenzelle lesen und Header (Bit0-Bit6) extrahieren
1 | |
Oder nur das niederwertigeste Byte lesen und Header (Bit0-Bit6) extrahieren
1 | |
Sorry, der Kuddelmuddel ist mir beim Kopieren pasiert, das ist beim Programmieren alles korrekt ;) Ich werde die "Optimierung" des etwas schnelleren Rauslesens also rausnehmen und das komplette DWORD rauslesen. Gruß Bernhard
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.