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 23 maja 2025, o 08:49


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 
    Autor Wiadomość
    PostNapisane: 23 mar 2023, o 13:45 
    Offline
    Użytkownik

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

    Hej zwracam się o pomoc ponieważ już nie mogę wyjaśnić zjawiska, które zachodzi z moją attiny13. Pewnie mam błąd w programie, ale nie mogę się go doszukać.

    Napisałem prosty programik do włączania taśmy ledowej, sterowania PWM oraz jest wykorzystany jeden przycisk.
    W pętli głównej wymieram przyciskiem 100% świecenia lub 50% świecenia na biało.
    Jeśli podczas włączania zasilania trzymam przycisk to wchodzę do wyboru innych kolorów.
    Ustawienia koloru zapisuję w pamięci EEPROM, aby po uruchomieniu odczytać zmienne 8-bitowe ledr, ledg, ledb.

    Ogólnie wszystko działa według założeń, po włączeniu zasilania mam kolor taki jaki był wybrany poprzednio.

    ALE...

    Niestety jak testuję i losowo np. po 5-15 włączeniach zasilania taśma nagle świeci innym kolorem, albo na 50% zamiast na 100%, albo jak mam wybrany biały kolor to zaświeci na błękitny, albo nawet wejdzie ustawienie którego nie mam w prgramie np. czerwony świecący na 10%, itp.
    Na początku myślałem, że mam problem ze stosem bo program zajmował 88,3%, więc go odchudziłem i obecnie zajmuje 76,6%:

    ----------------------------------------
    Device: attiny13

    Program: 784 bytes (76.6% Full)
    (.text + .data + .bootloader)

    Data: 7 bytes (10.9% Full)
    (.data + .bss + .noinit)

    EEPROM: 3 bytes (4.7% Full)
    (.eeprom)

    ----------------------------------------

    Czy jest mi ktoś w stanie pomóc? Czy problem jest z moim wsadem czy problem jest gdzieś indziej?

    MCU: AtTiny13
    F_CPU: wewnętrzny oscylator 9 600 000 Hz (wyłączony CKDIV)

    main.c:
    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.


    common.c:
    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.


    common.h:
    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: 23 mar 2023, o 16:59 
    Offline
    Użytkownik

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

    Spróbuj po funkcji led_and_key_init(); dać niewielkiego delaja tak z 5ms.


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 24 mar 2023, o 13:35 
    Offline
    Użytkownik

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

    @tonygryps zrobiłem tak jak zaproponowałeś i trochę się poprawiło. Już nie wchodziły mi tak często inne kolory po włączeniu zasilania, ale jednak zjawisko występowało.

    Zmieniłem ostatecznie funkcję do ustawienia koloru bo bardzo mi się nie podobała, była nieoptymalna i wydawała mi się podejrzanie. Dodatkowo nie wpisywała do zmiennych ram_cfg.ledr, ram_cfg.ledg, ram_cfg.ledb wartości kolorów i moim zdaniem to był ten błąd.

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


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


    Jak widać znaczna różnica :P mocno odchudziło to kod :lol: Po tej zmianie, dziwnego efektu wyświetlania przypadkowych kolorów już nie ma.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 2 kwi 2023, o 09:08 
    Offline
    Użytkownik

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

    Cytuj:
    Jednak ten delay musi być, bo jak go wyrzuciłem to znowu co jakiś czas inne kolory wchodziły po restarcie.

    Chodzi o to żeby dać trochę czasu na ustalenie się stenów na pinach procka , możesz jeszcze dać podciąganie rezystorami tych pinów od przycisków tak z zakresu 10kom do 47kom.



    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 5 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