[avr-gcc] duza tablica w eepromie

Jul 22, 2004 5 Replies

Mam du¿± tablice w eepromie ( 128 byte) jak ja zgrabnie zainicjalizowac? na razie domyslnie mam tam same "FF" a chcialbym zera. Poza tym jest to wlasciwie struktura z roznymi typami pól m.in. char tab[64];



Dlaczego zmienne w ramie sa domyslnie zerowane a w eepromie nie? jfk



Juz wiem! tak:

typedef struct struktura { char c; char tab[64]; int a; }struktura; struktura ee_strukt __attribute__ ((section(".eeprom"))) = {

22, {}, 0 };

const char tablica[128] __attribute__ ((section(".eeprom"))); kompilator tworzy plik ktory trzeba wgrac do eepromu.

bo na poczatku programu jest procedura zerujaca wszystkie zmienne globalne i statyczne. a nie ma procedury zerujacej zmiennych w eepromi.

Thu, 22 Jul 2004 11:13:50 +0200, na pl.misc.elektronika, jfk napisał(a):

Normalnie : uchar etable[128] EEPROM; Tablica jest wyzerowana, ale tylko w pliku hex zawartości eeprom, który trzeba dopiero załadować. Zerowanie zmiennych w RAM to standard C - eeprom jest wyposażeniem pozastandardowym i inicjalizator C w ogóle go nie uwzględnia - IMHO słusznie - dostęp do eeprom jest powolny i ma ograniczoną liczbę cykli.

To znaczy ze plik .eep rozni siê od .hex tylko tym szczegó³em ? Teraz zawsze bede uzywal tego pliku.

Racja - chodzi³o mi w³asnie o plik .eep

Dzieki za pomoc Pozdrawiam jfk

Fri, 23 Jul 2004 07:53:36 +0200, na pl.misc.elektronika, jfk napisał(a):

W znacznym uproszczeniu. Jak sobie te pliki nazwiesz i w jakim formacie zostaną utworzone - zależy tylko od Ciebie : od opcji jakie podasz w wywołaniu narzędzia avr-objcopy tworzącego ostateczne pliki wynikowe. Na ogół używa się formatu Intel hex czytelnego dla większości programatorów.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required