ATNEL tech-forum
https://forum.atnel.pl/

Jak zapisać daną wartość do pamięci EEPROM?
https://forum.atnel.pl/topic22278.html
Strona 1 z 1

Autor:  ShanSong [ 24 maja 2019, o 20:53 ]
Tytuł:  Jak zapisać daną wartość do pamięci EEPROM?

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Zależy mi na zapisaniu tych zmiennych do pamięci EEPROM, ale nie mogę sobie z tym poradzić. Eclipse wyrzuca mi Syntaxa i nie mam pojęcia co jest tego przyczyną. Na internecie o samym zastosowaniu eeprom_write_byte / eeprom_read_byte dużo nie znalazłem. Wiem, że można tworzyć różne funkcje do zapisów, sterować pilotami i w ogóle, ale ja jeszcze nie jestem na tak zaawansowanym poziomie i chcę poznać tą podstawę zapisu i odczytu z eeprom. Będę wdzięczny za odpowiedz :)

Autor:  Zealota [ 24 maja 2019, o 20:56 ]
Tytuł:  Re: Jak zapisać daną wartość do pamięci EEPROM?

W dziesiątej linii zamiast robić wywołanie funkcji to robisz deklarację.
Usuń to "void" z 10 linii.
Oczywiście wywołanie funkcji musisz zrobić w funkcji main lub w jakiejś innej.
A tu robisz jak wspomniałem pomieszanie deklaracji funkcji z wywołaniem - totalny miszmasz

Autor:  ShanSong [ 24 maja 2019, o 21:08 ]
Tytuł:  Re: Jak zapisać daną wartość do pamięci EEPROM?

deklaracja funkcji to było by void eeprom_write_byte();
?

------------------------ [ Dodano po: 2 minutach ]

wróć

void eeprom_write_byte(uint8_t* ,uint8_t);

------------------------ [ Dodano po: 10 minutach ]

Po raz pierwszy nie wyrzuciło Syntaxa. Jak dla mnie duży sukces! Dziękuję :D

Autor:  Zealota [ 24 maja 2019, o 21:22 ]
Tytuł:  Re: Jak zapisać daną wartość do pamięci EEPROM?

Ponieważ zapisałeś void, a potem "pewną nazwę" i to poza jakimkolwiek ciałem innych funkcji to jest to prawdopodobnie interpretowane jako "jakaś deklaracja", nawet jeśli nie deklarowałeś parametrów funkcji.
Podsumowując zapis w 10 linii jest całkowicie błędny. Oczywiście możesz się upierać, że nie - Twój wybór :)

Autor:  Tom92 [ 24 maja 2019, o 22:04 ]
Tytuł:  Re: Jak zapisać daną wartość do pamięci EEPROM?

ShanSong napisał(a):
chcę poznać tą podstawę zapisu i odczytu z eeprom.

Tu masz podstawy zapisu i odczytu:
http://mirekk36.blogspot.com/2012/11/avr-eeprom-struktury-poradnik-do-ksiazek.html?m=1

Autor:  Daro69 [ 24 maja 2019, o 22:55 ]
Tytuł:  Re: Jak zapisać daną wartość do pamięci EEPROM?

Witam,
póki co, widać w kodzie inkluda, definicję trzech zmiennych i jakby deklarację funkcji nie zwracającej wartości, ale z dwoma parametrami funkcji.
pierwszym parametrem jest argument rzutowany na wskaznik uint8_t jako wskaznik wartości '1', kolejnym parametrem jest argument o wartości '2' w typie uint8_t.
to jakby coś pomiędzy (deklaracją/definicją/wywolaniem) funkcji.... coś mieszam?

Autor:  kazekat [ 25 maja 2019, o 00:03 ]
Tytuł:  Re: Jak zapisać daną wartość do pamięci EEPROM?

ShanSong napisał(a):
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Zależy mi na zapisaniu tych zmiennych do pamięci EEPROM, ale nie mogę sobie z tym poradzić. Eclipse wyrzuca mi Syntaxa i nie mam pojęcia co jest tego przyczyną. Na internecie o samym zastosowaniu eeprom_write_byte / eeprom_read_byte dużo nie znalazłem. Wiem, że można tworzyć różne funkcje do zapisów, sterować pilotami i w ogóle, ale ja jeszcze nie jestem na tak zaawansowanym poziomie i chcę poznać tą podstawę zapisu i odczytu z eeprom. Będę wdzięczny za odpowiedz :)

Według mnie to brakuje Ci nawiasu przed ostatnim średnikiem w 10 linii, powinno być:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Autor:  ShanSong [ 25 maja 2019, o 08:50 ]
Tytuł:  Re: Jak zapisać daną wartość do pamięci EEPROM?

Racja, nie zauważyłem braku nawiasu

------------------------ [ Dodano po: 6 minutach ]

Przepraszam, że nagle zmienię temat, ale czy w Eclipse jest taka "mapa pamięci"? Nie znam prawidłowej nazwy więc nie mogę tego znaleźć :shock:
To bardzo pomaga wskazać czy na danych komórkach pamięci coś jest zapisane.
Obrazek

Autor:  kazekat [ 25 maja 2019, o 09:47 ]
Tytuł:  Re: Jak zapisać daną wartość do pamięci EEPROM?

W eclipsie chyba czegoś takiego nie ma ale jest takie narzędzie(nie raz uratował mnie):
https://atnel.pl/i2c-scaner.html
ze stajni Atnel.
Tutaj masz poradnik do tego programu:
https://www.youtube.com/watch?v=T1g4jwub7-Y

Autor:  ShanSong [ 25 maja 2019, o 09:48 ]
Tytuł:  Re: Jak zapisać daną wartość do pamięci EEPROM?

Dzięki!

Autor:  andrews [ 25 maja 2019, o 12:16 ]
Tytuł:  Re: Jak zapisać daną wartość do pamięci EEPROM?

kazekat napisał(a):
W eclipsie chyba czegoś takiego nie ma ale jest takie narzędzie(nie raz uratował mnie):
https://atnel.pl/i2c-scaner.html

Sądząc po tym, że autor wątku dołącza plik nagłówkowy <avr//eeprom.h>, to prawdopodobnie chce zapisywać dane w wewnętrznej pamięci EEPROM mikrokontrolera, a nie w zewnętrznej. Jeśli tak, to narzędzie do skanowania magistrali I2C mu nie pomoże. Poza tym, nawet gdyby chodziło o zewnętrzną pamięć EEPROM, to niekoniecznie przecież musi ona być obsługiwana poprzez magistralę I2C, może być np. poprzez SPI, przecież autor wątku tego nie napisał.

@ShanSong
Uwagi kolegi Zealota są jak najbardziej zasadne. Ja chciałbym tylko jeszcze dodatkowo zaproponować, abyś uczył się od razu prawidłowego definiowania zmiennych w EEPROM.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Jeśli zdefiniujesz zmienne z atrybutem EEMEM wtedy (w uproszczeniu):
  • Kompilator sam zarezerwuje odpowiednią dla danego typu zmiennej ilość bajtów i automatycznie przypisze im adresy, pod którymi będą zapisane. Ty nie będziesz musiał pamiętać i zastanawiać się, pod którym adresem jest odpowiednia zmienna, będziesz mógł się do zmiennych odwoływać za pomocą ich nazw (używając operatora &), tak jak to pokazałem w powyższym fragmencie kodu. Przy trzech zmiennych pamiętanie ich adresów to jeszcze może nie problem, ale jeśli umieścisz ich tam kilkanaście lub kilkadziesiąt, a może w dodatku jakieś tablice i struktury...
  • Jeśli przypiszesz tym zmiennym jakieś wartości początkowe, to podczas budowania programu zostanie utworzony plik z rozszerzeniem *.eep, którego będziesz mógł użyć podczas programowania mikrokontrolera, aby te wartości początkowe od razu do pamięci EEPROM wpisać. Oczywiście nadal będziesz mógł w trakcie działania programu te dane odczytywać i zapisywać tam nowe wartości.

Jeśli chodzi o podgląd zmiennych w poszczególnych typach pamięci (FLASH, EEPROM, RAM) oraz symulowanie pracy programu i obserwowanie, co się dzieje w poszczególnych rejestrach mikrokontrolera, to Atmel Studio 7 ma całkiem niezły symulator i debugger. Wprawdzie wymaga to nieco czasu, żeby opanować podstawy obsługi tych narzędzi, ale moim zdaniem warto, bo czasami (nie tylko) dla początkujących są bardzo pomocne. Wprawdzie mają swoje ograniczenia (szczególnie symulator nie zawsze jest w stanie zrobić wszystko to, co debugger sprzętowy), ale dla początkującego, przy prostych programach te ograniczenia nie powinny stanowić większego problemu.

Autor:  ShanSong [ 25 maja 2019, o 22:21 ]
Tytuł:  Re: Jak zapisać daną wartość do pamięci EEPROM?

Dziękuję za szczegółowe wyjaśnienie andrews! Twój kod jest naprawdę czytelny. Jeszcze nie jestem do końca pewny jak plik *.eep będę używać do wpisywania wartości początkowych, ale popracuję nad tym. :D
Atmel Studio mam akurat na komputerze to też się pobawię.

Strona 1 z 1 Strefa czasowa: UTC + 1
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/