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"
ACR GCC pytanie
May 12, 2004
15 Replies
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