eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaAVR, Arduino - odmierzanie czasu między zdarzeniamiRe: AVR, Arduino - odmierzanie czasu między zdarzeniami
  • Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.
    atman.pl!news.task.gda.pl!news.mm.pl!.POSTED!not-for-mail
    From: Zbych <z...@o...pl>
    Newsgroups: pl.misc.elektronika
    Subject: Re: AVR, Arduino - odmierzanie czasu między zdarzeniami
    Date: Wed, 25 Sep 2013 21:09:13 +0200
    Organization: Multimedia Polska SA
    Lines: 56
    Message-ID: <l1vc9v$ert$1@news.mm.pl>
    References: <l1svbp$l8g$1@portraits.wsisiz.edu.pl>
    <5242eecd$0$1215$65785112@news.neostrada.pl>
    <l1v4cc$5n6$1@portraits.wsisiz.edu.pl>
    NNTP-Posting-Host: host-62-141-224-139.tomaszow.mm.pl
    Mime-Version: 1.0
    Content-Type: text/plain; charset=UTF-8; format=flowed
    Content-Transfer-Encoding: 8bit
    X-Trace: news.mm.pl 1380136063 15229 62.141.224.139 (25 Sep 2013 19:07:43 GMT)
    X-Complaints-To: a...@m...pl
    NNTP-Posting-Date: Wed, 25 Sep 2013 19:07:43 +0000 (UTC)
    User-Agent: Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20100101 Thunderbird/24.0
    In-Reply-To: <l1v4cc$5n6$1@portraits.wsisiz.edu.pl>
    Xref: news-archive.icm.edu.pl pl.misc.elektronika:652419
    [ ukryj nagłówki ]

    W dniu 25.09.2013 18:52, Atlantis pisze:
    > W dniu 2013-09-25 16:10, Zbych pisze:
    >
    >> Nie ma po co się bronić. Jeśli nie posługujesz się wartością bezwzględną
    >> licznika, tylko różnicą wskazań to spokojnie możesz mierzyć przedziały
    >> mniejsze niż te 50 dni (niezależnie czy licznik się w tym czasie
    >> przekręci, czy nie). Wystarczy sprawdzić kilka przypadków na palcach:
    >
    > Czekaj, coś mi tu nie pasuje...
    >
    > Dla ułatwienia unsigned short int, wartości zapisane systemem dziesiętnym.
    >
    > prevMillis = 65000 (czas zapisany przy rozpoczęciu pomiaru)
    > millis = 65200 (obecny czas)
    > millis-prevMillis = 200 (czas trwania mierzonego zjawiska, wszystko się
    > zgadza)
    >
    > I w przypadku przekręcenia licznika:
    > prevMillis=65435 (czas zapisany na chwilę przed przekręceniem licznika)
    > millis=100 (obecny czas, już po przekręceniu licznika)
    > millis-prevMillis = -65335
    >
    > Zdecydowanie nie jest to jedno i to samo. ;)

    Masz braki w znajomości sposobów reprezentacji liczb w systemach
    cyfrowych. Poczytaj sobie do poduszki na temat U2.

    int main(int argc, const char *argv[])
    {
    unsigned short start = 65435;
    unsigned short stop = 100;
    printf("start: %u, stop %u, delta %u\n", start, stop, (unsigned
    short)(stop-start));
    return 0;
    }

    Wynik:
    start: 65435, stop 100, delta 201

    > W przypadku signed short int:
    > prevMillis = 32667
    > millis = -32668
    > millis-prevMillis = -65335

    int main(int argc, const char *argv[])
    {
    short start = 32667;
    short stop = -32668;
    printf("start: %d, stop %d, delta %u", start, stop, (unsigned
    short)(stop-start));
    return 0;
    }

    Wynik:
    start: 32667, stop -32668, delta 201

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: