Witam
Czy funkcja do obsługo EEPROM w avr z biblioteki avr/eeprom.h zapisuje dane w pamięci w konwencji little endian czy big endian? Zamieszczam fragmenty kodu:
Mam pewne dane sporych rozmiarów zapisane EEPROM oraz mam również zapisane 16-bitowe wskaźniki do tych danych również umieszczone w EEPROM. Wskaźniki kopiuje z EEPROM do tablicy w SRAM, aby później za pomocą nich szybko móc odwołać się do tych "dużych danych" w EEPROM. Problem w tym, że po wczytaniu danego wskaźnika do SRAM (czyli po pobraniu de facto liczby uint16_t z EEPROM) ,to 2 bajty z których składa się ten wskaźnik są zamienione kolejnością. Podejrzałem pamięć EEPROM w Atmel Studio. Procesor zawiera poprawną wartość wskaźników. Wygląda na to jakby funkcja eeprom_read_block() po pobraniu całej struktury ADR_ZNAK zamieniała kolejność bajtów w jej składowej nazwanej adr_znak. Przez to te adresy są niepoprawne i nie mogę się nimi posłużyć do znalezienia właściwej zawartość w EEPROM.
Czy funkcja do obsługo EEPROM w avr z biblioteki avr/eeprom.h zapisuje dane w pamięci w konwencji little endian czy big endian? Zamieszczam fragmenty kodu:
Kod: C / C++
Mam pewne dane sporych rozmiarów zapisane EEPROM oraz mam również zapisane 16-bitowe wskaźniki do tych danych również umieszczone w EEPROM. Wskaźniki kopiuje z EEPROM do tablicy w SRAM, aby później za pomocą nich szybko móc odwołać się do tych "dużych danych" w EEPROM. Problem w tym, że po wczytaniu danego wskaźnika do SRAM (czyli po pobraniu de facto liczby uint16_t z EEPROM) ,to 2 bajty z których składa się ten wskaźnik są zamienione kolejnością. Podejrzałem pamięć EEPROM w Atmel Studio. Procesor zawiera poprawną wartość wskaźników. Wygląda na to jakby funkcja eeprom_read_block() po pobraniu całej struktury ADR_ZNAK zamieniała kolejność bajtów w jej składowej nazwanej adr_znak. Przez to te adresy są niepoprawne i nie mogę się nimi posłużyć do znalezienia właściwej zawartość w EEPROM.