Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 13 gru 2024, o 11:27


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 
Autor Wiadomość
PostNapisane: 9 cze 2019, o 19:02 
Offline
Użytkownik

Dołączył(a): 08 cze 2016
Posty: 204
Lokalizacja: Katowice
Pomógł: 0

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.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 cze 2019, o 18:05 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2014
Posty: 1032
Lokalizacja: Trójmiasto
Pomógł: 190

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!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 cze 2019, o 20:10 
Offline
Użytkownik

Dołączył(a): 08 cze 2016
Posty: 204
Lokalizacja: Katowice
Pomógł: 0

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 cze 2019, o 20:20 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2014
Posty: 1032
Lokalizacja: Trójmiasto
Pomógł: 190

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?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 cze 2019, o 20:42 
Offline
Użytkownik

Dołączył(a): 13 paź 2015
Posty: 303
Lokalizacja: Rybnik
Pomógł: 10

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 cze 2019, o 23:16 
Offline
Użytkownik

Dołączył(a): 08 cze 2016
Posty: 204
Lokalizacja: Katowice
Pomógł: 0

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.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 cze 2019, o 00:00 
Offline
Użytkownik

Dołączył(a): 13 paź 2015
Posty: 303
Lokalizacja: Rybnik
Pomógł: 10

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 cze 2019, o 23:05 
Offline
Użytkownik

Dołączył(a): 08 cze 2016
Posty: 204
Lokalizacja: Katowice
Pomógł: 0

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.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 cze 2019, o 07:13 
Offline
Użytkownik

Dołączył(a): 13 paź 2015
Posty: 303
Lokalizacja: Rybnik
Pomógł: 10

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.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO