eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaDziałająca biblioteka do BMP085Re: Działająca biblioteka do BMP085
  • Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.cyf-kr.edu.pl!news.nask
    .pl!news.nask.org.pl!news.unit0.net!eternal-september.org!feeder.eternal-septem
    ber.org!news.eternal-september.org!.POSTED!not-for-mail
    From: "Pszemol" <P...@P...com>
    Newsgroups: pl.misc.elektronika
    Subject: Re: Działająca biblioteka do BMP085
    Date: Wed, 23 Apr 2014 18:31:48 -0500
    Organization: prywatna
    Lines: 1
    Message-ID: <lj9ig7$tij$1@dont-email.me>
    References: <lj8s5v$q9a$1@portraits.wsisiz.edu.pl>
    <lj9clo$e2i$1@portraits.wsisiz.edu.pl>
    Reply-To: "Pszemol" <P...@B...com>
    Mime-Version: 1.0
    Content-Type: text/plain; format=flowed; charset="utf-8"; reply-type=original
    Content-Transfer-Encoding: 8bit
    Injection-Date: Wed, 23 Apr 2014 23:31:19 +0000 (UTC)
    Injection-Info: mx05.eternal-september.org;
    posting-host="d763077b99e7293485067b7f9c6d1a11";
    logging-data="30291";
    mail-complaints-to="a...@e...org";
    posting-account="U2FsdGVkX1809ru//NtQ+ktHTOSgr/vX"
    X-MimeOLE: Produced By Microsoft MimeOLE V14.0.8117.416
    In-Reply-To: <lj9clo$e2i$1@portraits.wsisiz.edu.pl>
    X-Newsreader: Microsoft Windows Live Mail 14.0.8117.416
    Importance: Normal
    Cancel-Lock: sha1:g/QWK//RlydBlsQOgAB8Ri8cizg=
    X-Priority: 3
    X-MSMail-Priority: Normal
    Xref: news-archive.icm.edu.pl pl.misc.elektronika:663826
    [ ukryj nagłówki ]

    "Atlantis" <m...@w...pl> wrote in message
    news:lj9clo$e2i$1@portraits.wsisiz.edu.pl...
    > Ktoś ma jakiś pomysł gdzie mogę zacząć szukać przyczyny,
    > co jeszcze ewentualnie mogę sprawdzić?

    Wcześniej pisałeś że masz wynik około 300hPa...
    Może zamiast 1000hPa czytasz coś jak 344hPa?
    Jeśli tak, to stawiam hipotezę, że obcinasz górny bajt
    z trzy-bajtowego wyniku...
    1000hPa to 100000Pa, czyli w bajtach 0x01 0x86 0xA0.
    Jeśli weźmiesz pod uwagę że Twój kod mógł skrócić
    long'a do int'a i zamiast 0x186A0 dostaniesz 0x86A0
    to uzyskasz wynik 34464, czyli 344,64hPa...

    Poszukaj więc w swym kodzie miejsc, gdzie używasz
    funkcji oczekującej argumentu typu int (2 bajty) i tam
    posyłasz argument typu long (4 bajty) który zostaje przez
    kompilator ucięty do oczekiwanych przez funkcję 2 bajtów.

    Podejrzewałbym następujące linie Twojego kodu:

    1) itoa(pressure, result, 10);

    Prototyp funkcji:
    char * itoa ( int value, char * str, int base );
    Funkcja oczekuje int'a, posyłasz jej argument typu int32.
    Bad boy! :-)

    2) printf_P(pAnswer, PSTR("+PRESS: %d\r\n"), bmp085_getpressure());

    Funkcja printf dekodując format %d szuka na stosie wartości
    typu int, co ma dwa bajty a Ty podajesz wartość 4-bajtową.

    Zamień ten format %d na %ld, czyli zapisz tą linię tak:
    printf_P(pAnswer, PSTR("+PRESS: %ld\r\n"), bmp085_getpressure());
    http://www.cplusplus.com/reference/cstdio/printf/


Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

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: