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 04:31


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 
    Autor Wiadomość
    PostNapisane: 27 lut 2017, o 16:02 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 lip 2013
    Posty: 208
    Lokalizacja: Kielce
    Pomógł: 15

    Witam

    Czy któryś z forumowiczów "walczył" z odczytywaniem daty z RDS na avr-ach?

    Żeby uniknąć typu float, wykonuję mnożenia tak,aby mieć tylko liczby całkowite. Niestety i tak mi wychodzi np. rok odczytany z mjd jako 116,99 - a skoro to liczba całkowita - zostaje mi 116, więc jak potem dodam 1900, to otrzymuję rok 2016 niestety.

    Wieczorem załączę kod jak to u mnie wygląda.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 27 lut 2017, o 17:41 
    Offline
    Użytkownik

    Dołączył(a): 22 mar 2014
    Posty: 32
    Pomógł: 1

    Witam,

    poczytaj ten wpis Mirka o zaokrąglaniu wyniku podczas przeliczania float na int. To Ci powinno pomóc.http://mirekk36.blogspot.de/2013/01/rs232-ubrr-jak-prawidowo-obliczac-trick.html

    Pozdrawiam,
    Marcin


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 27 lut 2017, o 23:36 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 15 lip 2014
    Posty: 37
    Pomógł: 2



    Tak mi się skojarzyło :twisted:

    Przepraszam za off-topic...



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 28 lut 2017, o 01:54 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 lip 2013
    Posty: 208
    Lokalizacja: Kielce
    Pomógł: 15

    marcin_c napisał(a):
    Witam,

    poczytaj ten wpis Mirka o zaokrąglaniu wyniku podczas przeliczania float na int. To Ci powinno pomóc.http://mirekk36.blogspot.de/2013/01/rs232-ubrr-jak-prawidowo-obliczac-trick.html

    Pozdrawiam,
    Marcin


    Dziękuje Panowie, już wiem gdzie tkwił błąd w moim rozumowaniu.

    Dla daty 2017-02-27 rds odbierze wartość mjd = 57811.
    Rok = utcYear (odczytany z MJD) + 1900 + (jak kolega dambo nakierował mnie offset 1 lub 0). W naszym przypadku utcYear powinno wynosic 116.

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


    Tu wychodzi 116,99. Zmyliła mnie funkcja floor. Teraz już wiem, ze obcina ona to co po przecinku - zaokragla zawsze w górę. Wiec floor(116,99) = 116

    Nie wiedząc o tym, postanowiłem pozbyć się floatów - małe mnożenie:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Wyszło znowu 116,99 - i elegancko, bo przeciez utcYear u mnie to liczba całkowita wiec mam 116!

    Brakujaca jedynka "offset" jest liczony z wartosci utcMonth - jeśli otrzymamy (juz po zaokragleniu) wartość... 14 lub 15 - wtedy dodajemy do roku 1.

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


    Za utcYear podstawiamy Inta 116 i wychodzi 15,88 czyli 15. Więc odnalazł mi się brakujący rok :)

    Wartość miesiąca = utcMonth - 1 - offset * 12 = 15-1-12 = 2. Luty :)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 28 lut 2017, o 09:17 
    Offline
    Użytkownik
    Avatar użytkownika

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

    danny napisał(a):
    Zmyliła mnie funkcja floor. Teraz już wiem, ze obcina ona to co po przecinku - zaokragla zawsze w górę.
    Czepiam się, ale funkcja floor zaokrągla zawsze W DÓŁ, nie w górę.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 28 lut 2017, o 15:27 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 lip 2013
    Posty: 208
    Lokalizacja: Kielce
    Pomógł: 15

    dambo napisał(a):
    ciesze się, że pomogło to co wrzuciłem :)

    Na jakim moduliku masz odczyt tego RDSa?


    Moduł si4703 breakout board od Chińczyka z ebaya.



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

    Strefa czasowa: UTC + 1


    Kto przegląda forum

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