Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[C][Arduino] - Struktura do eeprom nie mogę tego załapać z przykładów

cepelia 27 Kwi 2014 10:14 2499 7
  • #1 27 Kwi 2014 10:14
    cepelia
    Poziom 20  

    Witam bardzo serdecznie, potrzebuję przerobić program który kiedyś działał na zwykłym EEPROM.write()...

    Niestety język C to troszkę mój kryptonit i za cholerę nie mogę się połapać w przykładach i dokumentacji jaką udało mi się do tej pory przeczytać...

    Otóż definiuję taką strukturę

    Kod: cpp
    Zaloguj się, aby zobaczyć kod

    w której pierwsza połowa to tag rfid, a druga to aktualna godzina w formacie unixtime ...

    Spotkałem się jeszcze z innym sposobem deklarowania struktury, mianowicie coś takiego
    Kod: cpp
    Zaloguj się, aby zobaczyć kod

    czy to tylko kwestia zapisu czy ma to jakieś inne znaczenie ???

    Teraz następna część problemu, czyli przypisanie zmiennych do struktury...
    próbowałem tak...

    Kod: cpp
    Zaloguj się, aby zobaczyć kod

    ale w żadnym tutku nie znalazłem niczego podobnego, choć moim zdaniem powinno to zadziałać jeśli nie to dlaczego ??

    no i dalej amba...

    jak zapisać taką strukturę do eeprom ??

    0 7
  • #3 27 Kwi 2014 12:56
    BlueDraco
    Specjalista - Mikrokontrolery

    W C nie możesz podstawić wektora jedną instrukcją (strukturę możesz), kompilator zgłosi to jako ostrzeżenie.

    0
  • #4 27 Kwi 2014 20:47
    cepelia
    Poziom 20  

    No dobra zapisuję...

    ale nadal zawsze od początku...

    Kod: cpp
    Zaloguj się, aby zobaczyć kod


    jeśli dobrze rozumiem to struktura działa podobnie jak klasa... tak ??

    przypisanie zmiennych...

    Kod: cpp
    Zaloguj się, aby zobaczyć kod

    cała struktura ma 14 bajtów...

    zapis...

    Kod: cpp
    Zaloguj się, aby zobaczyć kod


    ale jak zrobić (ewentualnie który składnik inkrementować) żeby zapisywało się do następnego 14 bajtowego kawałka ??

    w EEPROM.write miałem zrobiony licznik w ostatnim bajcie i tam po każdym zapisie go zwiększałem a po transmisji do programu w kompie go kasowałem... teraz zachciało mi się bardziej elegancko zrobić...

    0
  • #5 28 Kwi 2014 07:10
    robiw
    Poziom 26  

    Zadeklarowałeś już typ:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    To teraz deklarujesz zmienną w RAMie i tablicę n-elementową w EEPROM:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    I zapisujesz do EEPROMA dowolny element (np. 2.):

    Kod: c
    Zaloguj się, aby zobaczyć kod


    robiw

    0
  • #6 28 Kwi 2014 14:24
    cepelia
    Poziom 20  

    Czemu zmienna do eepromu jest [10] skoro cała struktura ma [14] ??

    0
  • #7 28 Kwi 2014 14:43
    Eagle
    Poziom 23  

    cepelia napisał:
    Czemu zmienna do eepromu jest [10] skoro cała struktura ma [14] ??


    Chodzi ci o
    Kod: c_loadrunner
    Zaloguj się, aby zobaczyć kod


    Dziesięć struktur typu Tag_time_read z których każda ma rozmiar 14, razem powinno zająć około 140, pomijając wyrównanie.

    0
  • #8 18 Maj 2014 07:34
    cepelia
    Poziom 20  

    Przepraszam że truję ale potrzebuję jeszcze pomocy...

    o ile mam ogarnięte zapisywania do eepromu w kontrolerze, to jeśli chodzi o zapisywanie do zewnętrznej pamięci jest słabo... mam coś takiego

    struktura... i zmienne

    Kod: cpp
    Zaloguj się, aby zobaczyć kod


    (notabene nie wiem jak wyczyścić Zmienna w ramie i cały czas mam te same dane nawet jak wyczyszczę eeprom to przy zapisie struktury wszystko wraca)

    mam też takie metody..

    Kod: cpp
    Zaloguj się, aby zobaczyć kod


    próbuję zapisać to w ten sposób...
    Kod: cpp
    Zaloguj się, aby zobaczyć kod


    odczytuję tak...
    Kod: cpp
    Zaloguj się, aby zobaczyć kod


    i teoretycznie powinienem dostać po kolei bajt po bajcie całą strukturę tak jak dostaje przy użyciu tego zapisu do eeprom'a e uc...

    Kod: cpp
    Zaloguj się, aby zobaczyć kod


    tu dostaje coś takiego...
    0 54
    1 54
    2 48
    3 48
    4 54
    5 66
    6 70
    7 56
    8 57
    9 51
    10 0
    11 234
    12 86
    13 120
    14 83
    15 54

    i tak ma być...

    a z zewnętrznego eeprom'a coś takiego...
    159 28
    160 255
    161 255
    162 255
    163 255
    164 28
    165 255
    166 255
    167 255
    168 255
    169 28
    170 255
    171 255
    172 255
    173 255
    174 28
    175 255
    176 255
    177 255
    178 255
    179 28
    180 255
    181 255
    182 255
    183 255
    184 28

    albo same 255...

    proszę pomóżcie mi bo już nie mam do tego siły... co robię źle albo czego źle używam...

    0