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!newsfeed2.atman.pl!newsfeed.
    atman.pl!.POSTED!not-for-mail
    From: "Grzegorz Niemirowski" <g...@p...onet.pl>
    Newsgroups: pl.misc.elektronika
    Subject: Re: Działająca biblioteka do BMP085
    Date: Thu, 24 Apr 2014 01:06:10 +0200
    Organization: ATMAN - ATM S.A.
    Lines: 54
    Message-ID: <lj9h2d$sl2$1@node1.news.atman.pl>
    References: <lj8s5v$q9a$1@portraits.wsisiz.edu.pl>
    <lj9clo$e2i$1@portraits.wsisiz.edu.pl>
    NNTP-Posting-Host: 031011139062.warszawa.vectranet.pl
    Mime-Version: 1.0
    Content-Type: text/plain; format=flowed; charset="UTF-8"; reply-type=original
    Content-Transfer-Encoding: 8bit
    X-Trace: node1.news.atman.pl 1398294413 29346 31.11.139.62 (23 Apr 2014 23:06:53 GMT)
    X-Complaints-To: u...@a...pl
    NNTP-Posting-Date: Wed, 23 Apr 2014 23:06:53 +0000 (UTC)
    X-Priority: 3
    X-MSMail-Priority: Normal
    X-Newsreader: OE PowerTool 4.5
    X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6157
    X-WWW: http://www.grzegorz.net/
    Xref: news-archive.icm.edu.pl pl.misc.elektronika:663825
    [ ukryj nagłówki ]

    Atlantis <m...@w...pl> napisał(a):
    > Hmm... Dziwna sprawa. Sądziłem, że winę za taki stan rzeczy ponosi błąd
    > w bibliotece. Jednak trafiłem na inną służącą do obsługi BMP085.
    > http://davidegironi.blogspot.com/2012/10/avr-atmega-
    bmp085-pressure-sensor
    > .html#.U1g0nFdpNIJ
    > Po podmienieniu plików, dostosowaniu źródeł i wgraniu hex-a okazało się,
    > że efekt nie zniknął. Ciągle otrzymuję dziwną wartość ciśnienia.
    > Prawdopodobieństwo wystąpienia tego samego błędu w dwóch różnych
    > bibliotekach jest niewielkie, więc należy założyć, że błąd tkwi w innym
    > miejscu.
    > W chwili obecnej procedura wysyłania wyniku wygląda w sposób następujący:
    > char result[10];
    > int32_t pressure = bmp085_getpressure();
    > itoa(pressure, result, 10);
    > strcpy_P(pAnswer, PSTR("+PRESS: "));
    > strcat(pAnswer, result);
    > strcat_P(pAnswer, PSTR("\r\n"));
    > Wskaźnik do bufora pAnswer jest następnie przekazywany do funkcji
    > zajmującej się wysyłaniem odpowiedzi na zapytania UDP.
    > Próbowałem także zastosować stdio:
    > printf_P(pAnswer, PSTR("+PRESS: %d\r\n"), bmp085_getpressure());
    > Efekt był dokładnie taki sam.
    > Ktoś ma jakiś pomysł gdzie mogę zacząć szukać przyczyny, co jeszcze
    > ewentualnie mogę sprawdzić?

    Zacząłbym od zignorowania bibliotek nietrzymających się dokumentacji BMP085.
    A ta mówi, żeby odczytać trzy bajty: najstarszy MSB, młodszy LSB i
    najmłodszy XLSB. Są to rejestry F6, F7 i F8. Te bajty są składane w inta, a
    potem całość przesuwana jest w prawo o 8-oss, gdzie oss oznacza
    over-sampling setting. W ten sposób otrzymujemy nieskompensowaną
    temperaturę. Następnie wykonywane są obliczenia kompensacyjne.
    A jaki mikrokontroler? Ma JTAG? Jak ma to użyj, bo kombinujesz strasznie
    zamiast użyć debuggera. Jak nie ma JTAGa, to użyj czegoś innego, np. portu
    szeregowego. Sprawdź jakie wartości masz odczytane w MSB, LSB i XLSB.
    Następnie zobacz co robi z nimi kod kompensacyjny. Na oko wygląda dobrze,
    ale może gdzieś jest pomieszane signed i unsigned. Prześledź działanie kodu
    w trakcie działania. Wrzucając hexy i patrząc na końcowy wynik będzie Ci
    bardzo trudno ustalić co się dzieje. Pomóc Ci też jest trudno, jeśli nie
    podajesz odczytanych wartości MSB, LSB i XLSB. Ja niestety nie posiadam
    BMP085 i nie porównam ze swoim, ale jakbyś podał wartości, to myślę, że
    byłoby łatwiej. Mógłbym np. odpalić sobie biblioteki z danymi z Twojego
    czujnika. Poza tym wkleiłeś bardzo krótkie fragmenty kodu, np. nie wiadomo
    jak Arduino liczy kompensację. Czy też dzielenie robi przesunięciem bitowym?
    A może robi normalne dzielenie? Bo to nie jest to samo: patrz przesuwanie
    bitów w liczbach ujemnych. I jeszcze jedno: o ile dobrze rozumiem, to żeby
    prawidłowo obliczyć ciśnienie, musisz mieć zmierzoną najpierw temperaturę.
    Mierzysz ją?

    --
    Grzegorz Niemirowski
    http://www.grzegorz.net/
    OE PowerTool i Outlook Express: http://www.grzegorz.net/oe/
    Uptime: 12 days, 22 hours, 55 minutes and 19 seconds

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: