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 17 maja 2025, o 00:56


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
    Autor Wiadomość
    PostNapisane: 6 sty 2018, o 20:30 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 19 lis 2015
    Posty: 219
    Pomógł: 20

    Cześć.

    Mam timer który co 10 ms zwiększa zmienną timer_ms

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



    Mam również funkcję do której jako argument przekazuję wskaźnik do zmiennej timer_ms

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


    Funkcja ma zapamiętać ostatnią wartość timer_ms, następnie pobrać wartość zmiennej *ms, obliczyć różnicę i jeżeli jest większa niż 50 wykonać działanie.

    Problem w tym, że jeżeli zmienna last_ms będzie miała wartość np 255 to nigdy nie spełni się ten warunek.

    Nie wiem jak do tego podejść, chodzi o to, aby w programie głównym mieć jedną zmienną timer_ms z której mogą korzystać różne funkcje.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 6 sty 2018, o 20:40 
    Offline
    Użytkownik

    Dołączył(a): 07 cze 2016
    Posty: 563
    Pomógł: 143

    jez2000 napisał(a):
    Problem w tym, że jeżeli zmienna last_ms będzie miała wartość np 255 to nigdy nie spełni się ten warunek.

    A dlaczego nie?
    Zapewne będzie się to wydawać nieco dziwne i nielogiczne, ale w arytmetyce liczb całkowitych bez znaku (jakimi są między innymi zmienne typu uint8_t) wynikiem odejmowania np. 60 - 255 jest liczba 61.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 6 sty 2018, o 20:52 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 19 lis 2015
    Posty: 219
    Pomógł: 20

    P. Mirek o tym pisze na przykładzie RC5, i nielogiczne staje się logiczne ale nie wiem dlaczego nie działa mi to w tym przypadku.

    Dioda mignie kilka razy i koniec. Coś, gdzieś robię źle.

    Lub źle podszedłem do zagadnienia.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 6 sty 2018, o 21:00 
    Offline
    Użytkownik

    Dołączył(a): 07 cze 2016
    Posty: 563
    Pomógł: 143

    Pewnie przez domyślną promocję do int.

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


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 6 sty 2018, o 21:12 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 19 lis 2015
    Posty: 219
    Pomógł: 20

    AAAAA.... :D

    Na stronie atnel jest o tym artykuł, czytałem go już kiedyś ale chyba pominąłem jakiś szczegół. Muszę się tam wrócić i uzupełnić braki.


    andrews - dzięki za pomoc

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

    No jest napisane


    http://atnel.pl/domyslna-promocja-do-typu-int.html
    Cytuj:
    Otóż kompilator zakłada, że z punktu widzenia zachowania najlepszej optymalizacji swoich działań, domyślnie obliczy każde wyrażenie w taki sposób, że jego wynik będzie się mieścił w zakresie liczby typu int


    Z forum.atnel.pl wszystko staje się jaśniejsze :D



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