Skocz do zawartości

Problem z zapis/odczyt EEPROM atmega8


Pomocna odpowiedź

Napisano

Witam,
mam problem z zapis/odczyt do wewnętrznej pamięci EEPROM atmega8.

Najpierw dołączam nagłówek:

Potem deklaruje zmienną p, która będzie adresem:

EEMEM unsigned char p;

następnie zapisuje do niej jakąś wartość:

eeprom_write_byte(& p, 100);

i zapisuje do zmiennej pwm:

pwm = eeprom_read_byte(& p)

i programuje procka. Gdy chce wyświetlić na wyświetlaczu wartość tez zmiennej, wychodzą jakieś inne wartości lub znaki.

Jaka może być przyczyna takiego zachowania mikrokontrolera?

Zmień

eeprom_write_byte(& p, 100);

na

eeprom_write_byte(a, 100);

a

pwm = eeprom_read_byte(& p)

na

pwm = eeprom_read_byte(a)

Zmieniłem nazwę zmiennej p na a bo włączał się uśmieszek.

I oczywiście zadbaj aby zmienna p miała taką samą wartość przy zapisie i odczycie.

Czyli mogę zrobić tak:?

const EEMEM unsigned char a;

I jeszcze jedno, czy podczas programowania procesora pamięć EEPROM zostaje wyczyszczona czy te dane dalej są dostępne?

I jeszcze jedno, czy podczas programowania procesora pamięć EEPROM zostaje wyczyszczona czy te dane dalej są dostępne?

Zależnie od Fusebitów. Jest jeden bit oznaczony jako EEprom preserve i określa czy eeprom się kasuje czy zostaje podczas programowania.

Skrócony kod wygląda teraz tak:

unsigned char pwm;
const EEMEM unsigned char pw; // zmienna EEPROM przechowująca adres pwm

potem wczytuje:

pwm = eeprom_read_byte(pw);

podczas kompilacji wyrzuca mi warning:

warning: passing argument 1 of '__eerd_byte_m8' makes pointer from integer without a cast

Co jest nie tak?

makes pointer from integer without a cast

"robi wskaźnik z integer bez rzutowania", czyli musisz do funkcji podać adres zmiennej a nie jej wartość.

pwm = eeprom_read_byte(&pw);

  • Pomogłeś! 1

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...