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 25 kwi 2025, o 14:16


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 12 ] 
    Autor Wiadomość
    PostNapisane: 19 kwi 2018, o 15:22 
    Offline
    Użytkownik

    Dołączył(a): 06 wrz 2017
    Posty: 94
    Pomógł: 0

    Witam.Mam pytanko jak zastosować Timer w pętli for zamiast delay_ms().Czy w ogóle można.Z góry dziękuje.Pozdrawiam.

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

    Wiem że można zrobić to tak:

    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: 19 kwi 2018, o 19:52 
    Offline
    Użytkownik

    Dołączył(a): 06 wrz 2017
    Posty: 94
    Pomógł: 0

    Jest tam kto?

    ------------------------ [ Dodano po: 27 minutach ]

    Nie wiem czy zadałem głupie pytanie czy trudne ??????



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 19 kwi 2018, o 21:44 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 22 paź 2013
    Posty: 1968
    Lokalizacja: Lipsko
    Pomógł: 125

    Właściwie to co za różnica czy będziesz blokował pętlę delayem czy timerem... Timery stosuje się aby był maksymalnie szybki przelot przez pętlę główną z wykluczeniem fragmentu, zależnego czasowo. W twoim wypadku jak zrozumiałem to dalej blokująca opcja i łatwiej by ją było zrealizować wpisując wartość do timera, np. Timer=100; , a następnie czekać aż odliczy go przerwanie za pomocą while(Timer); .
    Co chcesz konkretnie osiągnąć?

    _________________
    http://www.sylwekkuna.com



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 20 kwi 2018, o 00:36 
    Offline
    Moderator
    Avatar użytkownika

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

    wrctomi napisał(a):
    Wiem że można zrobić to tak:

    no to skoro wiesz ? ... to po co pytanie ? ja nie za bardzo rozumiem takiego podejścia - więc jeśli rozjaśnisz to może coś uda się pomóc - bo na razie to nie wiadomo w czym

    _________________
    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: 20 kwi 2018, o 09:50 
    Offline
    Użytkownik

    Dołączył(a): 06 wrz 2017
    Posty: 94
    Pomógł: 0

    Bo mam zakodowane z poradników Mirku " pozbyć się obrzydliwych delay-ów " .Czyli można stosować delay_ms w pętli for? I Dlatego kombinuje jak koń pod górę.A dlaczego nie zeruje się przy 255 w tym przykładzie? I czy mógłby ktoś napisać kod za pomocą pętli for bez delay_ms żeby wyszedł efekt z portu 1, 3, 7, 15, 31, 63, 127, 255.Nie stosując tablicy.

    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: 20 kwi 2018, o 10:17 
    Offline
    Moderator
    Avatar użytkownika

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

    a jak ma ci się zerować skoro twoje licz to pewnie typ uint8_t a ty sprawdzasz czy jest większe niż 255. A jaki jest zakres dla uint8_t ? hmm?

    _________________
    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: 20 kwi 2018, o 10:40 
    Offline
    Użytkownik

    Dołączył(a): 06 wrz 2017
    Posty: 94
    Pomógł: 0

    Przy uint8_t licz; zapalają się diody wszystkie lecz nie zeruje się. Natomiast jak dam uint16_t to dochodzi tylko do przed ostatniej diody ale z kolei się zeruje? A jak dam bez licz *= 2; to inaczej zapala. Dodaje bit po bicie wiadomo ale też prawidłowo zeruje.Jak rozwiązać ten licz*=2 ?Bo chcę efekt jak podałem wcześniej.

    ------------------------ [ Dodano po: 52 minutyach ]

    Dał bym tak ale :
    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.

    itd. Ale znowu ta if-o logia.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 20 kwi 2018, o 12:03 
    Offline
    Użytkownik

    Dołączył(a): 23 sty 2014
    Posty: 1085
    Pomógł: 73

    Może tak:

    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: 20 kwi 2018, o 12:47 
    Offline
    Użytkownik

    Dołączył(a): 06 wrz 2017
    Posty: 94
    Pomógł: 0

    Później zobacze bo nie jestem przy kompie.Dam znać.narazie dzięki



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 20 kwi 2018, o 21:58 
    Offline
    Użytkownik

    Dołączył(a): 06 wrz 2017
    Posty: 94
    Pomógł: 0

    Działa ale jak dodałem tmp++ ale nie tak jak chcę.Ma działać 1,3,7,itd do 255. A to działa 2,3,4 i jeszcze bez pierwszego bita bo w kodzie tmp++ i jeszcze przesunięcie bitowe to już od drugiego zaczyna tak 2,3,4,5.Wyrzuciłem ~ i zmieniłem na tmp=0;.Bo mam inaczej podłączone diody(anodami).Ale to szczegół.Zatem jak to zrobić?

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


    ------------------------ [ Dodano po: 9 minutach ]

    Jeszcze to zmieniłem i działa od pierwszego bitu.
    PORTB = (tmp << 0);



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 kwi 2018, o 09:44 
    Offline
    Użytkownik

    Dołączył(a): 06 wrz 2017
    Posty: 94
    Pomógł: 0

    Ale jak wspomniałem że ma działać 1,3,7,15 itd na końcu 255. ?? Mógłby ktoś podpowiedzieć?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 15 maja 2018, o 02:33 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 08 mar 2014
    Posty: 162
    Pomógł: 6

    wrctomi napisał(a):
    Ale jak wspomniałem że ma działać 1,3,7,15 itd na końcu 255. ?? Mógłby ktoś podpowiedzieć?


    Proszę bardzo, teraz tylko zamiast delaya użyj timerka :D
    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.



    _________________
    1+1=10



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

    Strefa czasowa: UTC + 1


    Kto przegląda forum

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