ACR GCC pytanie

May 12, 2004 15 Replies

Witam, Czy komus udalo sie kiedykolwiek zrobic kopie struktury w eepromie lub przekopiowac z eepromu do ramu ponizszymi instrukcjami?? "eeprom_read_block" i "eeprom_write_block"


U¿ytkownik "Pawe³ Kurzawa" snipped-for-privacy@kpw.qs.pl> napisa³ w wiadomo¶ci news:c7sv7u$fkv$ snipped-for-privacy@nemesis.news.tpi.pl...

Bez problemów. Wojtek

typedef struct { int adres[6]; unsigned char preheat[6]; unsigned char limit[6]; unsigned char character[6]; unsigned char nazwa[16] ; }eeprom_set;

eeprom_set ustawienia;

if (eeprom_is_ready()) eeprom_read_block(&ustawienia,&eeust[setting_number],sizeof(ustawienia));

Jedno ale... jak eeprom nie ready to nie odczyta... ;-) Wlasnie odkrylem blad ;-)

Jedno ale, funkcje z prototypami w eeprom.h nie dzialaja w Mega169.

Jaki codem Ci sie to udalo???

W skrocie piszac mam tablice struktur jak ponizej jedna w RAM 2ga w EEPROM'ie. i ani czytanie ani zapis nie dziala why??? atmega128 ku formalnosci.

typedef struct { Time_t Timer_on; Time_t Timer_off; u08 Socket_nr; //jaki przekaznik steruje ten timer } Timer_t;

static Timer_t Timer [0x08]; static Timer_t Timer_eep [0x08] EEPROM_SECTION;

eeprom_read_block ( Timer, Timer_eep, sizeof ( Timer ) );

eeprom_write_block ( Timer_eep, Timer, sizeof ( Timer ) );

zagladalem do zrodla eeprom_read_block i eeprom_write_block i tam juz jest zaimplementowane czekanie na gotowosc eepromu !!!!

p.s. mam podejrzenie mam ze read dziala poprawnie ale write juz nie !!

Racja...

U mnie dziala poprawnie i zapis i odczyt.

U¿ytkownik "Pawe³ Kurzawa" snipped-for-privacy@kpw.qs.pl> napisa³ w wiadomo¶ci news:c7t1qv$ca$ snipped-for-privacy@atlantis.news.tpi.pl...

Najpierw sprawd¼ czy uda Ci siê zapisaæ i odczytaæ int'a. Wojtek

wiec napisalem szybko krotka procedurke zaladowalem flash i eeprom:

static unsigned int eeprom_var4 EEPROM_SECTION = 12345; static unsigned int floatVar;

eeprom_read_block( &floatVar, &eeprom_var4, sizeof(eeprom_var4) ); rprintf ("%d %d", floatVar, sizeof(eeprom_var4) );

floatVar = 2123; eeprom_write_block( &eeprom_var4, &floatVar, sizeof(floatVar) );

i tu moje zdziwienie !!!! odczyt dziala a zapis NIE !!! caly czas na lcd widze 12345 i 2 (sizeof) WHY ????

W artykule <c7t70p$cgl$ snipped-for-privacy@nemesis.news.tpi.pl> Paweł Kurzawa napisal(a):

A w size_of to wpisałeś nazwę zmiennej, a nie typ?

Marcin Stanisz

a co w tym dziwnego???

Mozna. A przy tablicach nawet nalezy.

J.

A przy write musisz zamieniac adresy ?

void eeprom_read_block (void *buf, const void *addr, size_t n); void eeprom_write_block (const void *buf, void *addr, size_t n);

na moj gust sprobuj

eeprom_write_block( &floatVar, &eeprom_var4, sizeof(floatVar) );

J.

Z dobrze poinformowanego źródła wiem, że nie ma w tym cudów 8-)

...

... Tak jak zauważył J.F. nie ma powodu, aby zamieniać zmienne w wywołaniu funkcji. Zawsze na drugim miejscu jest adres do EEPROM-u.

Pozdrawiam,

dzieki wam wielkie, w zyciu bym nie wladl na to :))

W artykule <c7t8gr$h3d$ snipped-for-privacy@nemesis.news.tpi.pl> Paweł Kurzawa napisal(a):

Moja niewiedza :-)

Marcin Stanisz

Join the Discussion

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

Didn't find your answer?

Ask the community — no account required