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 10 lip 2025, o 18:54


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 
    Autor Wiadomość
    PostNapisane: 29 cze 2015, o 21:40 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 12 mar 2014
    Posty: 197
    Lokalizacja: Kielce
    Pomógł: 3

    Witam. Nie wiem za bardzo jak ugryźć temat zaprzęgnięcia Timerów programowych do napędzania regulacji fazy, a mianowicie 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.


    Jak pozbyć się tych delajów :|

    _________________
    BlueBook



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 29 cze 2015, o 21:48 
    Offline
    Użytkownik

    Dołączył(a): 01 sty 2014
    Posty: 116
    Pomógł: 14

    Chyba nie za bardzo wiadomo o co Tobie chodzi. Do czego zmienna k w drugiej pętki for? Nic z nią wewnątrz pętli się nie dzieje..



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 29 cze 2015, o 22:12 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27415
    Lokalizacja: Szczecin
    Pomógł: 1043

    timery programowe i takie paskudne delaye 2000 ms ??? też kompletnie nie wiem o co tu chodzi

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 29 cze 2015, o 22:22 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 12 mar 2014
    Posty: 197
    Lokalizacja: Kielce
    Pomógł: 3

    W książce są użyte delaje. Natomiast ja chce wyrzucić je i użyć timerów programowych. Czyli:

    krok1: Inkrementacja zmiennej "i" do 100 (np. 15ms);
    krok2: Odczekanie 2 sekund
    krok3: dekrementacja zmiennej -- (np.15ms)
    krok4:Odczekanie 2 sekund

    Problem jest taki, że nie wiem jak to zrobić. Gdyż najpierw jest czas pracy(inkrementacja "i") potem 2 sekundy przerwy potem znów czas pracy (dekrementacja "i") i znów odczekanie 2 sekund. Jak użyć do tego Timera programowego???

    _________________
    BlueBook



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 29 cze 2015, o 23:25 
    Offline
    Użytkownik

    Dołączył(a): 01 sty 2014
    Posty: 116
    Pomógł: 14

    Możesz w przerwaniu od timera, ustawionym na 15ms inkrementować zmienną i w określonych zakresach zmiennej inkrementować lub dekrementować zmienna "i" :

    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: 30 cze 2015, o 08:54 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 12 mar 2014
    Posty: 197
    Lokalizacja: Kielce
    Pomógł: 3

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



    zrobiłem coś takiego. Niby ok działa ale jest dziwne działanie urządzenia 230. Nie takie płynne i nie za fajnie wygląda efekt końcowy...

    Nie wiem od czego to zależy, stosując pętle for z niebieskiej książki wszystko jest ok ale są tam delaje co blokuje procka :(

    ------------------------ [ Dodano po: 37 minutach ]

    A inaczej niż delajem to jak opóźnić pętle for ???

    ------------------------ [ Dodano po: 41 minutach ]

    Daniel880 napisał(a):
    Możesz w przerwaniu od timera, ustawionym na 15ms inkrementować zmienną i w określonych zakresach zmiennej inkrementować lub dekrementować zmienna "i" :

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



    Ok, ale zmienna "i" zasuwa z pęłną prędkością i w rzeczywistości brak efektu :(

    _________________
    BlueBook



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 30 cze 2015, o 14:09 
    Offline
    Użytkownik

    Dołączył(a): 25 lut 2015
    Posty: 252
    Lokalizacja: Lublin
    Pomógł: 23

    Jeśli zmienną i inkrementujesz/dekrementujesz w kodzie przerwania, to zasuwa z taką prędkością z jaką ustawisz.
    Przerwania (też) są podane w BB "jak krowie na miedzy".
    Jak ustawisz przerwanie np. co 10ms, to co tyle będzie się zmieniało i.

    ------------------------ [ Dodano po: 17 minutach ]

    Proponuję w ogólny zarysie:

    deklaracja np. licz - zmienna volatile, która będzie odliczała 2 sekundy

    Ustawiasz timer aby przerwanie wykonywało się np. co 10ms - wykładnia w BB.
    W obsłudze przerwania co 10 ms zwiększasz licz

    main:
    licz = 200
    pętla {
    sprawdzasz licz, jeśli licz > 199 to {
    krok1: Inkrementacja zmiennej "i" do 100 (nie więcej niż 1ms przy samej inkrementacji);
    }
    licz = 0
    krok2: Odczekanie 2 sekund - sprawdzasz licz, jeśli > 199 to {
    krok3: dekrementacja zmiennej i}
    licz = 0
    }
    main koniec

    Ina opcja:
    Inkrementujesz licz i sprawdzasz go na 200 w przerwaniu.
    Po przekroczeniu 2 sekund ustawisz flagę, którą sprawdzasz i wykonujesz kolejne fragmenty kodu w main, jak jest ustawiona.
    Zerujesz i w momentach kiedy chcesz 2 sekundowego "delaya"

    ------------------------ [ Dodano po: 26 minutach ]

    Rozumiem, że zwiększenie/zmniejszanie i to sterowanie mocą.
    Te fragmenty będą za szybko się wykonywały.
    Dlatego zamiast tych operacji na i możesz zastosować zmienną licz:
    kanal1 = procent(licz/2);
    Zmiana od 0 do 100% będzie trwała 2 sekundy w tym przypadku + przerwa 2 sekundowa na koniec.
    Nic nie stoi na przeszkodzie, żebyś zastosował jeszcze jedną zmienną obok licz w przerwaniu dla dodatkowego timera programowego
    i z niej korzystał.

    ------------------------ [ Dodano po: 37 minutach ]

    Jak z licz korzystać zamiast dekrementacji i?
    To banalną zminę zostawiam dla ciebie.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 30 cze 2015, o 18:50 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 31 mar 2015
    Posty: 310
    Pomógł: 18

    Rafal9018 napisał(a):

    Nie wiem od czego to zależy, stosując pętle for z niebieskiej książki wszystko jest ok ale są tam delaje co blokuje procka :(

    Mógłbym powtórzyć pytanie - o co chodzi? Czy tak bardzo Ci zależy na usunięciu delajów ?
    Ja proponuję za komentować wnętrze funkcji while(1) i odpowiedzieć Sobie - dlaczego żarówki świecą (niepełnym światłem)?
    Coś z tą blokadą jest nie tak!
    Wpisując procent w odpowiednie miejsca - możesz ręcznie zmieniać świecenie. Co o tym myślisz - odpisz



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

    Strefa czasowa: UTC + 1


    Kto przegląda forum

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