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 10 kwi 2025, o 14:21


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 
    Autor Wiadomość
    PostNapisane: 16 paź 2018, o 19:32 
    Offline
    Użytkownik
    Avatar użytkownika

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

    Cześć chciałbym zapytać , bo trochę mam problem ze stosem dlatego ,że za dużo mam zmiennych globalnych i program zajmuje mi za dużo pamięci .
    Przedstawię kod programu:

    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.


    zmienna licz_cyfral określa odczytaną wartość z EPROMA następnie w funkcji test() jest rozdzielana przy pomocy zmiennych niestety globalnych uint8_t cy1,cy2,cy3,cy4,cy0;
    zmienne określają liczbę dziesiątek , setek itd .
    Odczyt zmiennej wygląda tak w momencie załączenia zasilania z wciśniętym przyciskiem miga raz dioda żółta rozdziela ona odczytywaną liczbę , następnie jeśli jest wartosią 0 miga czerwona , jeśli jest dodatnia to miga zielona tyle razy jaka jest wartość , następnie znowu miga żółta i określa następną cyfę.
    Chyba napisałem trochę chaotycznie , przedstawię to na przykładzie :
    liczba 20471 kolejność migania diody:
    - żółta
    - zielona dwa razy "2"
    - żółta
    - czerwona bo jest "0"
    - żółta
    - zielona cztery razy "4"
    - żółta
    - zielona siedem razy "7"
    - żółta
    - zielona 1 raz "1"

    Pytanie polega na tym jak zmienne uint8_t cy1,cy2,cy3,cy4,cy0; przerobić na lokalne bo wynik kompilacji jest taki i trochę zajmuje:

    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: 16 paź 2018, o 20:55 
    Offline
    Uzytkownik zasłużony dla forum.atnel.pl
    Avatar użytkownika

    Dołączył(a): 16 lip 2012
    Posty: 2088
    Lokalizacja: Leżajsk / Kraków
    Pomógł: 411

    Można też tak uprościć nieco obliczenia i ilość zmiennych globalnych, które wykorzystujesz do przenoszenia informacji pomiędzy funkcjami:
    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.

    PS.
    static EEMEM uint32_t liczym_w_eepromie jest 4 bajtową zmienną, a odczytujesz słowo 2 bajtowe. Zmieniłbym na uint16_t


    Autor postu otrzymał pochwałę

    _________________
    Dragonus Cracovus: Biomagia



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 16 paź 2018, o 21:01 
    Offline
    Użytkownik
    Avatar użytkownika

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

    Dzięki za rozjaśnienie wrzucę do programu i poinformuje o wynikach.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 paź 2018, o 09:02 
    Offline
    Użytkownik
    Avatar użytkownika

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

    Bardzo dziękuję koledze Krauser , proszę o to wynik kompilacji:

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

    Problemu ze stosem nie będzie program hula jak tralala, tochę przekombinowałem z tą funkcją rozdziel, bo po co faktycznie rozdzielać jak można zmienne raz określić.
    A z tymi zmiennymi d jako wrzucanie argumentów do funkcji to pomysł mi chodził po głowie , ale kolega Krauser jest WIELKI DZIĘKI.



    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: 4 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 8 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