Skocz do zawartości

[C] [ATmega2560] - Zapis do EEPROM - błąd kompilacji


Pomocna odpowiedź

Napisano

Witam,
chcę zapisywać i odczytywać do EEPROMu dane konfiguracji. Mam taki kod:

#include <avr/io.h>
#include <avr/eeprom.h>
#include <string.h>

typedef struct
{
char* x_coord = 0;
char* y_coord = 0;
char* s_coord = 0;
bool is_set = false;
} touch_coord;

class A
{
private:
public:
		A();
		uint8_t config_read();
		touch_coord* coord_cfg;
		touch_coord* config_get();
		touch_coord cfg_touch_eeprom EEMEM;
		touch_coord cfg_touch_ram;
		void config_save();

};

A::A(){}

uint8_t A::config_read()
{
memset((void*) &cfg_touch_ram, 0, sizeof(touch_coord));

// pobierz ustawienia
eeprom_read_block((void*) &cfg_touch_ram, &cfg_touch_eeprom, sizeof(touch_coord));

return 1;
}

touch_coord* A::config_get()
{
return &cfg_touch_ram;
}

void A::config_save()
{
eeprom_write_block((void*) &cfg_touch_ram, &cfg_touch_eeprom, sizeof(touch_coord));
}


int main(void)
{
A test;
test.config_read();
   while(1)
   {
       //TODO:: Please write your application code 
   }
}

Po kompilacji otrzymuje błąd:

section attribute not allowed for 'cfg_touch_eeprom'
Gdy dodam static przed definicję cfg_touch_eeprom:
static touch_coord cfg_touch_eeprom EEMEM;

otrzymuje takie błędy:

ld returned 1 exit status

undefined reference to `A::cfg_touch_eeprom'

Co robię źle i jak to naprawić żeby działało?

Pozdrawiam

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...