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

EEPROM coś nie wyszło
https://forum.atnel.pl/topic22319.html
Strona 1 z 1

Autor:  Daro68 [ 9 cze 2019, o 19:02 ]
Tytuł:  EEPROM coś nie wyszło

Proszę o pomoc coś nie wyszło jak w tytule, krótki program w ramach nauki pięć przycisków z tego cztery do obsługi led zmieniają stan świecenia diody a piąty ma wgrać stan led z eeprom czyli takzwane ustawienia fabryczne.Problem polega na tym że po wciśnięciu przycisku KEY5_PIN nie wgrywają się ustawienia eeprom.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Poz.

Autor:  xentis [ 10 cze 2019, o 18:05 ]
Tytuł:  Re: EEPROM coś nie wyszło

No wszystko ładnie i pięknie, ale skąd wiesz że nie działa? Przecież nigdzie w kodzie nie "wyrzucasz" zawartości struktur na piny sterujące diodami!

Autor:  Daro68 [ 10 cze 2019, o 20:10 ]
Tytuł:  Re: EEPROM coś nie wyszło

właśnie w tym problem, czyli po naciśnięciu KEY5 program powinien skopiować dane z pamięci eeprom do ram i załadować inf. domyślne które znajdują się w eeprom

Autor:  xentis [ 10 cze 2019, o 20:20 ]
Tytuł:  Re: EEPROM coś nie wyszło

Cytuj:
po naciśnięciu KEY5 program powinien skopiować dane z pamięci eeprom do ram i załadować inf. domyślne które znajdują się w eeprom
Ale na jakiej podstawie twierdzisz że tak się nie dzieje? W kodzie nie ma żadnej funkcji która by zmieniała stan diod świecących zgodnie z ustawieniami w strukturze w ramie więc nie rozumiem na jakiej podstawie wyciągasz wnioski że kopiowanie danych z eeprom do ram nie działa?

Autor:  Tom92 [ 10 cze 2019, o 20:42 ]
Tytuł:  Re: EEPROM coś nie wyszło

Musisz zrobić to co Ci mówi xentis czyli to co skopiowałeś z pamięci flash do ram to po tej czynności wyrzuć to na piny. Coś typu:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


I tak z każdą diodą.

Autor:  Daro68 [ 10 cze 2019, o 23:16 ]
Tytuł:  Re: EEPROM coś nie wyszło

xentis nie twierdze że tak się nie dzieje tylko nie umiałem nie rozumiałem :mrgreen: jak to wydostać z eepromu twoja uwaga co do funkcji jest słuszna dopiero wtedy uswiadomiłem sobie gdzie tkwił błąd w moim myśleniu po pierwsze ubzdurało mi się że #define LED_1_stan 1 - wgrane do eeprom = z oświecenie led LED_1_ON a po drugie to ma załatwić reszte sprawy
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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

i wszystko stało się jasne same LED_1_stan 1 nie oznacza oświecenia się Led ,
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

teraz wszystko działa poprawnie ale chciałbym jeszcze żeby przy restarcie też się wgrały ustawienia z eeprom sugestie mile widziane ;)

Poz.

Autor:  Tom92 [ 11 cze 2019, o 00:00 ]
Tytuł:  Re: EEPROM coś nie wyszło

Daro68 napisał(a):
ale chciałbym jeszcze żeby przy restarcie też się wgrały ustawienia z eeprom sugestie mile widziane ;)


To chcesz załadować na starcie dane z pamięci flash czy eeprom? Jak z flash to przed petla while() dodaj funkcje load_defaults() a następnie mozesz wyrzucic to na piny tak jak wyzej napisalem.

A jak z eeprom to np zapisuj sobie stan diody do eeprom po wcisnieciu przycisku i po restarcie wczytaj dane z eeprom podobnie jak znowu wyzej pisalem tylko już funkcją check_and_load_defaults().

Autor:  Daro68 [ 11 cze 2019, o 23:05 ]
Tytuł:  Re: EEPROM coś nie wyszło

zadałeś kolejne ważne pytanie, widać znów coś źle zrozumiałem z lekcji Mirka myslałem że zapis funkcji void load_defaults( void ) dotyczy zapisu do eeprom ,czy tak :?:

a zapis funkcji void check_and_load_defaults( void ) sprawdza czy w eeprom jest coś zapisane, czy tak. :?:

Tom92 napisał(a):
To chcesz załadować na starcie dane z pamięci flash czy eeprom?

Moim celem było zapisanie w eeprom dlatego po twoim pytaniu uświadomiłem sobie :o że znowu coś pomieszałem.
Poz.

Autor:  Tom92 [ 12 cze 2019, o 07:13 ]
Tytuł:  Re: EEPROM coś nie wyszło

Funkcja load_defaults(); służy do załadowania ustawień "fabrycznych", czyli tych, które zdeklarowałeś tutaj w pamięci FLASH:

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


Funkcja ta kopiuje ustawienia z pamięci flash do ram i eeprom.

Daro68 napisał(a):
a zapis funkcji void check_and_load_defaults( void ) sprawdza czy w eeprom jest coś zapisane, czy tak.


Tak, funkcja sprawdza czy w pamięci EEPROM jest coś zapisane, jeśli tak do załaduje ustawienia z EEPROM, a jeśli nic nie ma w eepromie to załaduje ustawienia z pamięci flash jak wyżej.

Daro68 napisał(a):
Moim celem było zapisanie w eeprom


Czyli jak zmieniasz stan diody po wciśnięciu przycisku to chcesz zapisać ten stan w pamięci eeprom, żeby po restarcie były zapamiętane ostatnio świecące diody? Bo jeśli tak to spróbuj coś w tym stylu (nie mam na szybko pomysłu jak to zapisać z led_tog dlatego na tym przykładzie):

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


Jak zapiszesz sobie do eeprom w ten sposób stan diod to po restarcie przed pętlą main sprawdzisz czy coś masz w eeprom i załadujesz te ustawienia check_and_load_defaults(); i wysterujesz ledy - możesz to zrobić jak w moim pierwszym poście tutaj. Dodatkowo możesz zrobić ustawienia "fabryczne" na przycisku nr 5 jak w swoim przykładzie chciałeś load_defaults(); i wysterować ledy.

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