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 17 sie 2025, o 10:35


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 10 ] 
    Autor Wiadomość
    PostNapisane: 23 gru 2018, o 03:51 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 25 mar 2013
    Posty: 62
    Pomógł: 0

    Witam, szukam sposobu na obliczenie czasu który upłyną między dwoma odczytami z RTC no i nie idzie :P
    nie chcieli byście zerknąć gdzie tak mocno zbłądziłem?
    chyba że odpowiedz jest w którejś z książek, to mam je ze sobą

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


    mniejwięcej pewnie widać o co mi chodziło
    w strukturze rtc przechowywany jest pierwszy odczyt a w rtc_new następny no i zależy na ich odjęciu



    Ostatnio edytowano 23 gru 2018, o 20:05 przez tomasz1987, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 gru 2018, o 10:45 
    Offline
    Użytkownik

    Dołączył(a): 22 kwi 2017
    Posty: 99
    Lokalizacja: Piła
    Pomógł: 4

    A gdybyś powołał dwie dodatkowe zmienne zamieniając sekundy, minuty, godziny czasu pierwszego i później drugiego to łatwiej odejmować. Miałem podobny problem tutaj topic21286.html spójrz może coś Ci się nasunie na myśl.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 gru 2018, o 11:00 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 25 mar 2013
    Posty: 62
    Pomógł: 0

    Wczoraj jak zamknąłem oczy
    Wpadłem na to że problemem jest sposób w jaki są przechowywane zmienne
    A to że formatuje wyjście jak wyrzucam to na rs232 tylko mi to maskuje
    Jeszcze nie miałem czasu tego sprawdzić ale może między karpiem a uszkami



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 gru 2018, o 11:17 
    Offline
    Użytkownik

    Dołączył(a): 22 kwi 2017
    Posty: 99
    Lokalizacja: Piła
    Pomógł: 4

    Po odjęciu wyjdą Ci sekundy ale można sobie zmienić na godziny, minuty a na pewno łatwiej operować na takich dodatkowych zmiennych.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 gru 2018, o 14:04 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 25 mar 2013
    Posty: 62
    Pomógł: 0

    ok to tak
    liczby w tej struktuże sa przechowywane jako BCD
    więc dodając te dane w takiej postaci nie zawsze uzyskamy poprawny wynik :P
    dla przykładu 02.02.00
    kiedy zsumujemy wyjdzie nam 4
    ale jak sumujemy 10.10.00 to wyjdzie 32
    więc dodałem funkcję bcd2dec
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    no i wyszło 20


    tak to jest jak się robi coś o 2 w nocy jak się powinno spać

    wesołych świąt :D



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 gru 2018, o 18:48 
    Offline
    Użytkownik

    Dołączył(a): 13 lis 2013
    Posty: 168
    Lokalizacja: Szczecin
    Pomógł: 1

    Witam.
    Popraw babola w tytule bo kłuje w oczy :shock:
    Pozdrawiam.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 24 gru 2018, o 10:45 
    Offline
    Użytkownik

    Dołączył(a): 07 gru 2013
    Posty: 90
    Pomógł: 6

    Witam nie wiem czy do końca Ciebie zrozumiałem - chcesz obliczyć jaki czas upłynął np pomiędzy jednym zdarzeniem o czasie np 02:00:00 a drugim zdarzeniem powiedzmy o 11:55:00. Jeśli nie zależy ci na sekundach to ja bym zrobił to tak: odczytujesz z rtc -> przerabiasz do "dec" i zamieniasz godziny + minuty na jedną zmienna:

    czas_u16=(( godziny * 60) +minuty);

    z drugim czasem robisz dokładnie to samo a później zwykłe odejmowanie i masz czas jaki upłynął. Wyświetlenie wyniku:

    godziny=czas_u16/60; minuty=czas_u16%60;

    Do wyświetlania czasu zegarka, czy do wyświetlania w menu, lub czasu który upłynął - używasz tylko jednej funkcji.Jeśli chciałbyś liczyć czas z sekundami to trochę trudniej gdyż musiał byś użyć uint32, albo sekundy liczyć oddzielnie.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 24 gru 2018, o 11:50 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 25 mar 2013
    Posty: 62
    Pomógł: 0

    Dzięki za podpowiedź
    Ale wolę dodawać i odejmowaćna uint8 jak mnożyć na uint16
    Taką loszkę napisałem


    Sorki ale taka tylko kopię mam

    Obrazek

    Tak tak wiem milion bcd2dec
    Jak będę miał zrobię sobie nowy kontener z wartościami w uint8



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 24 gru 2018, o 12:22 
    Offline
    Moderator
    Avatar użytkownika

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

    tomasz1987 napisał(a):
    Taką loszkę napisałem

    No rzeczywiście masakra, po jaki gwint miliard razy wykonujesz bcd2dec() ? Zamiast RAZ wczytać do zmiennych i skonwertować z BCD na DEC i wtedy porobić obliczenia.

    _________________
    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: 24 gru 2018, o 12:24 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 25 mar 2013
    Posty: 62
    Pomógł: 0

    Nie ma to jak edytować posta kiedy ktoś pisze następnego :P

    Tak wszystko wiem pisałem na szybko żeby sprawdzić czy działa



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

    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:  
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO