Strona 1 z 1

Zapis danych z własnej struktury do eeprom

: niedziela 21 lut 2016, 20:15
autor: danielos
Witam.

Utworzyłem taką o to strukturę:

Kod: Zaznacz cały

typedef struct{
   uint8_t active_out;         //czy wyjscie jest aktywne
   char name_out[9];
   uint8_t type_event;
   DS_TYPE_TIME out_time[2];      //dane dla czasu 1 i 2
   DS_TYPE_TEMP out_temp;         //dane dla temperatury
   uint8_t range_in;            //dane dla sygnału wejsciowego
}DS_OUT_CONF;


Oraz powołałem do życia 3 zmienne:

Kod: Zaznacz cały

extern DS_OUT_CONF pgm_out_conf[] PROGMEM;         // dane w pamięci FLASH
extern DS_OUT_CONF eem_out_conf[] EEMEM;         // dane w pamięci EEPROM
extern DS_OUT_CONF ram_out_conf[];               // dane w pamięci RAM


Przy próbie wykonania takich operacji:

Kod: Zaznacz cały

eeprom_read_block( &ram_out_conf, &eem_out_conf, sizeof(ram_out_conf) );
eeprom_write_block( &ram_out_conf, &eem_out_conf, sizeof(ram_out_conf) );
memcpy_P( &ram_out_conf, &pgm_out_conf, sizeof(pgm_out_conf) );


wyskakuje mi następujący błąd:

Kod: Zaznacz cały

error: invalid application of 'sizeof' to incomplete type 'struct DS_OUT_CONF[]'


Wspomnę też, że inna struktura którą utworzyłem nie powoduje błędów.

Co może być problem.
Próbowałem już sam rozwiązać to, lecz skończyły mi się pomysł gdzie może być problem.

Re: Zapis danych z własnej struktury do eeprom

: niedziela 21 lut 2016, 20:21
autor: Antystatyczny
Ja bym się raczej posługiwał nazwą typu zamiast nazwą zmiennej, ale nie wiem, czy to rozwiąże problem. A zatem zamiast sizeof(pgm_out_conf) uzyłbym sizeof(DS_OUT_CONF)

Re: Zapis danych z własnej struktury do eeprom

: niedziela 21 lut 2016, 20:23
autor: danielos
Aż się wstyd przyznać, za taki błąd.

Zapomniałem uzupełnić rozmiar tablicy zmiennych które utworzyłem w pliku nagłówkowym.

Miało być:

Kod: Zaznacz cały

extern DS_OUT_CONF pgm_out_conf[8] PROGMEM;         // dane w pamięci FLASH
extern DS_OUT_CONF eem_out_conf[8] EEMEM;         // dane w pamięci EEPROM
extern DS_OUT_CONF ram_out_conf[8];               // dane w pamięci RAM


Po wpisaniu rozmiaru problem znikł.
To już chyba przemęczenie, że taki szkolny błąd.

Sorry za zamieszanie;)

Re: Zapis danych z własnej struktury do eeprom

: niedziela 21 lut 2016, 20:24
autor: Antystatyczny
Spoko... ja też tego nie widziałem :)

Re: Zapis danych z własnej struktury do eeprom

: niedziela 21 lut 2016, 20:29
autor: danielos
A wszystko przez to, że w tej głównej strukturze umieściłem tablicę innej struktury. Bo po zmianie tamtej tablicy na dwie zmienne nie było problemu. Tylko, że dwie zmienne mi nie odpowiadały - trudniejszy dostęp, niż do tablicy (bardziej by mi to skomplikowało kod).

Re: Zapis danych z własnej struktury do eeprom

: niedziela 21 lut 2016, 20:30
autor: Antystatyczny
A zwróciłem uwagę w definicji typu złożonego na to, czy są wpisane rozmiary tablic... a niżej już nie spojrzałem.