• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Eeprom użycie w struct
#1
Czesc mam taki kod

Kod:
struct {
    uint8_t pq_id;
    uint8_t mqb_id;
} buttons[] = {
// MQB right side:
    {0x00, 0x00},
    //{0x74, 0x74}, // travel asist
    //{0x25, 0x25}, // Grźanie
    {0x03, 0x16}, // prev
    {0x02, 0x15}, // next
    {0x2B, 0x19}, // voice/mic <- voice/mic
    //{0x1A, 0x1C}, // phone
    {0x1A, 0x23}, // phone <- view
    //{0x29, 0x23}, // return<-view
    {0x22, 0x04}, // up
    {0x23, 0x05}, // down
    {0x09, 0x03}, // src-
    {0x0A, 0x02}, // src+
    {0x28, 0x07}, // ok
    // 'return' on PQ not assigned to MQB: 0x29
// MQB left side:
    {0x06, 0x10}, // vol+
    {0x07, 0x11}, // vol-
    //{0x1A, 0x0C}, // phone <- Mode
};

I chcę aby kolumna druga tzn ta
Po przecinku była odczytywana z eeprom ta struct jest wykonywana przed setup i loop jak to można rozwiązać ?? Proszę o pomoc
 
Odpowiedź
#2
Żeby to móc odczytywać z EEPROM to najpierw musisz tam zapisać, a jak wybierzesz sobie w tym miejscu adres pamięci gdzie to zapiszesz, to potem jest twoja baza do odczytu i od niej liczysz wszystkie ofsety o wielkość elementu struktury. To jest po prostu tablica o elementach składających się z typu zawierającego dwa uint8_t .
Tak stworzyłeś tą strukturę, że ona nie ma nazwy, która by ułatwiała dostęp do jej poszczególnych elementów przy tworzeniu nowych zmiennych tego typu, chyba trzeba od razu zdefiniować tu kolejne zmienne.
W programie tworzysz sobie zmienną tego typu i do niej wczytujesz oba bajty, albo odpowiednią wyliczanką pojedynczy bajt. By móc się odwoływać po ludzku do elementów tablicy możesz stworzyć typ wyliczeniowy ( travel, Grźanie,itd). Odczytasz dzięki temu element button[next], albo przesuniesz się po komórkach pamięci EEPROM o down*(sizeof(buttons)) by dostać się do elementu button[down].
Jeśli na końcu dodasz:
//{0x1A, 0x0C}, // phone <- Mode
},b;
to b będzie zmienną tego typu jak elementy tablicy, jak wczytasz jeden element z tablicy buttons do zmiennej b, to do jej elementów odwołujesz się przez b.pq_id i b.mqb_id.
Generalnie to nie ma czegoś takiego jak używanie zmiennej z EEPROM, musisz mieć zmienną w RAM i do niej wczytać to co chcesz w danej chwili użyć z EEPROM, teraz dopiero możesz używać tych danych w funkcjach.
Chyba że będziesz trzymał całą tablicę w RAM, to np. buttons[src-].pq_id.
Co wygoglałem w ciągu 10s, bo po co komu takie fanaberie jak struktury w Arduino, ale z grubsza tak jest.
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości