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? 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 22 lip 2025, o 18:03


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
    Autor Wiadomość
    PostNapisane: 31 sty 2021, o 18:27 
    Offline
    Użytkownik

    Dołączył(a): 09 sty 2021
    Posty: 66
    Pomógł: 0

    Witam, chcę napisać program, który po przytrzymaniu przycisku dłużej niż 3s będzie ciągle zmieniał stan diody do momentu, kiedy nie puścimy przycisku. Chcę aby zmiana stanu diody występowała w odstępie 200ms i aby nie był to program blokujący. Używam do tego timera0 w trybie CTC gdzie porównanie przerwanie od porównana występuje co 10ms. Nie rozumiem dlaczego kod w liniach 47-55 nie działa tak jak chcę. Dioda gaśnie i zapala się takim seriami. Nie jest to płynna zmiana stanu diody tylko najpierw dioda bardzo szybko zapala się potem gaśnie i znowu zapala się. Co tutaj mam nie tak? Poprzednie timery programowe działają poprawnie.

    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: 31 sty 2021, o 20:07 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 26 sty 2016
    Posty: 1174
    Lokalizacja: Kraków
    Pomógł: 94

    Linia 50 blokuje program do momentu puszczenia przycisku KEY1 (jeśli dobrze zrozumiałem kod)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 31 sty 2021, o 22:31 
    Offline
    Użytkownik

    Dołączył(a): 09 sty 2021
    Posty: 66
    Pomógł: 0

    Marhef napisał(a):
    Linia 50 blokuje program do momentu puszczenia przycisku KEY1 (jeśli dobrze zrozumiałem kod)

    Tak. bo o to mi tutaj chodzi, że jeżeli trzymam przycisk dłużej niż 3s to dioda zmienia swój stan. Nie wiem tylko dlaczego nie dzieje się to równo co 200ms. Jak używam "_delay_ms" to wszystko działa poprawnie, ale wiadomo nie chcę wykorzystywać delayów bo to blokuje mikrokontroler.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 1 lut 2021, o 20:05 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 26 sty 2016
    Posty: 1174
    Lokalizacja: Kraków
    Pomógł: 94

    Co znaczy "nie dzieje się równo co 200ms"? Czyli co ile? Masz może zgrane jakieś przebiegi?
    Bo tu popatrz, musisz mieć jednocześnie spełniony warunek
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
    wcześniej spełniony warunek
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
    żeby flag był równy 1, niespełniony warunek
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
    oraz spełniony warunek
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
    Może spróbuj inaczej do tego podejść. W tym momencie masz za dużo zależności.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 1 lut 2021, o 23:43 
    Offline
    Użytkownik

    Dołączył(a): 09 sty 2021
    Posty: 66
    Pomógł: 0

    Kolega miał chyba rację :) Zmieniłem trochę kod na taki jak niżej i działa poprawnie dziękuję za pomoc.

    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  
    Wyświetl posty nie starsze niż:  Sortuj wg  
    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

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