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 17 maja 2025, o 05:22


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 
    Autor Wiadomość
    PostNapisane: 11 wrz 2022, o 19:06 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 23 paź 2017
    Posty: 584
    Pomógł: 0

    Witam.
    Dla utrwalenia wiedzy z zakresu programowania języka C wykonałem ćwiczenie odczytu zmiennej z Eeproma i wyświetlenie na LCD.
    Niestety robię jakiś błąd i nie wiem gdzie .
    Opisze dokładniej:

    Deklaruję zmienną globalną i nadaje jej wartość 40 :
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Następnie próbuję odczytać przy pomocy funkcji i przekazać do zmiennej estart :

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


    Niestety po próbie wyświetlenia na lcd :
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Wartość wyświetla -1 :(

    Pokarze cały kod:
    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.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 11 wrz 2022, o 19:43 
    Offline
    Użytkownik

    Dołączył(a): 02 gru 2015
    Posty: 550
    Pomógł: 28

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



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 11 wrz 2022, o 20:15 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 06 mar 2015
    Posty: 323
    Lokalizacja: Rybnik
    Pomógł: 23

    A gdzie masz funkcję do zapisu zmiennej do eeprom?
    Ja bym to zrobił tak:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    i dopiero teraz wyślj zmienną "tmp1" na wyswietlacz.

    _________________
    http://www.avrboss.pl



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 11 wrz 2022, o 21:20 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 23 paź 2017
    Posty: 584
    Pomógł: 0

    No dobrze tak będzie ale jak zrobić żeby od razu w deklaracji zmienna uint8_t zmienna_w_eeprom EEMEM przyjęła wartość 40 ? A dopiero potem w pętli głównej ją odczytać?
    to znaczy jak inaczej wykonać ten zapis skoro jest zły :(
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 12 wrz 2022, o 09:50 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 06 mar 2015
    Posty: 323
    Lokalizacja: Rybnik
    Pomógł: 23

    Nie tylko zapis deklaracji zmiennej jest zły ale ty nigdzie w programie nie zapisujesz jej do eeprom a próbujesz ją z niego odczytać.
    A jeśli chcesz ją zadeklarować od razu z wartością i zapisać, to zrób tak:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    I dopiero teraz na wyświetlacz.


    Autor postu otrzymał pochwałę

    _________________
    http://www.avrboss.pl



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 12 wrz 2022, o 18:45 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 23 paź 2017
    Posty: 584
    Pomógł: 0

    Tak oczywiście masz racje dopiero teraz zrozumiałem że tak należy zrobić, mylnie rozumowałem że można prościej.
    Dlaczego w ogóle o to pytam już wyjaśniam: W pewnym moim projekcie napotkałem na problem ze stosem dlatego kombinuje czy część zmiennych globalnych zapisałbym do EEproma i zwolniłbym RAM.
    Ale nie wiem czy to się uda i czy to dobry kierunek moich rozważań?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 12 wrz 2022, o 20:12 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 06 mar 2015
    Posty: 323
    Lokalizacja: Rybnik
    Pomógł: 23

    Ja do eeproma zapisuję tylko takie dane, które chcę mieć przy starcie procka, czyli tzw."ustawienia fabryczne" a
    co do zmiennych to tam gdzie nie jest to konieczne, to nie używam zmiennych globalnych, tylko zmienne lokalne.
    Mam nadzieję, że pomogłem.

    _________________
    http://www.avrboss.pl



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 13 wrz 2022, o 07:46 
    Offline
    Użytkownik

    Dołączył(a): 25 lip 2013
    Posty: 2595
    Pomógł: 128

    Ja bym do Eeproma takich rzeczy nie chował. Eeprom potrafi płatać figle przy zakłóceniach. Trzeba się zabezpieczać sumami kontrolnymi, żeby miec pewność, że to co jest zapisane nie uległo przekłamaniu.
    Lepiej w swoim kodzie pootymalizuj co się da lub zmień procek na większy zamiast pakować zmienne do eeproma. W Eepromie trzyma sie ustawienia a nie zmienne. Chyba, że byś chciał użyć szeregowego RAMu - są takie kruszynki lub nawet FRAM. Ale to już takie fanaberie :)


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 13 wrz 2022, o 13:55 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 23 paź 2017
    Posty: 584
    Pomógł: 0

    Dzięki za podpowiedz to teraz wątpliwości już mam rozwiane



    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 10 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:  
    cron
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO