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

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA w 2025? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 9 kwi 2025, o 13:17


    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 ] [ Zaznacz wszystko ]
    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: 1033
    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: 1033
    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 ] [ Zaznacz wszystko ]
    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