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.

AVR/ATMEGA644PA/Atmel Studio 6 - Struktura w EEPROM - błędny odczyt

ps19 28 Lip 2013 00:41 1089 2
  • #1 28 Lip 2013 00:41
    ps19
    Poziom 12  

    Witam

    Można prosić o zerknięcie w te funkcję, otóż pewnego dnia przestały zapisywać/odczytywać EEPROM :?

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Jak chcę wyświetlić np. lcd_int(stoper_tab_read().ms); to otrzymuję cały czas takie same cyfry - eeprom nie nadpisuje się

    0 2
  • Pomocny post
    #2 28 Lip 2013 08:42
    tmf
    Moderator Mikrokontrolery Projektowanie

    Masz podawane złe długości pól. Skoro odwołujesz się np. do pola okrążenia typu DANE_ZAWODNIKA to nie możesz robić sizeof(DANE_ZAWODNIKA) bo to nadpisze ci kolejne pola, powinno być sizeof ale pola okrążenia. Takich błędów masz więcej. Definicja:
    DANE_ZAWODNIKA numer_zawodnika_tab[sizeof(DANE_ZAWODNIKA)];
    też na oko jest bez sensu. Bo robisz tablicę o typie DANE_ZAWODNIKA zawierającą tyle elementów ile bajtów zajmuje ten typ. Dziewaczne, aczkolwiek niekoniecznie błędne. Kolejny błąd, poważny, jest w funkcji stoper_tab_read. Tworzysz tam tymczasową tablicę stoper_tab_temp, po czym funkcja zwraca jej element. To jest niedopuszczalne. W chwili zakończenia funkcji ta tablica jest niszczona i nie wolno zwracać referencji do niej, bo wskazuje ona na pamięć, która do tej zmiennej już nie należy. Także ta tablica musi być albo statyczna, albo pamięć dla niej musi być przydzielana dynamicznie, albo powinna być utworzona poza funkcją.

    0
  • #3 28 Lip 2013 21:30
    ps19
    Poziom 12  

    Dziękuję za pomoc, po wprowadzeniu poprawek zaczęło działać.

    0