-
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
Następne wpisy z tego wątku
- 24.04.14 01:31 Pszemol
- 24.04.14 01:34 Pszemol
- 24.04.14 10:32 Elektrolot
- 24.04.14 16:26 Atlantis
- 24.04.14 17:13 Atlantis
- 24.04.14 20:04 Pszemol
- 24.04.14 21:01 Sylwester Łazar
- 24.04.14 21:01 Sylwester Łazar
- 24.04.14 21:05 Pszemol
- 24.04.14 21:10 Grzegorz Niemirowski
- 24.04.14 21:14 Sylwester Łazar
- 24.04.14 21:28 Pszemol
- 24.04.14 21:28 Pszemol
- 24.04.14 21:31 Grzegorz Niemirowski
- 24.04.14 23:15 Pszemol
Najnowsze wątki z tej grupy
- 8080
- Portowanie CP/M
- radyjko
- Re: Basen i chłodzenie w w wentylacji mechanicznej
- Akumulatory VRLA
- ładowarka zmarła
- Podstawa bezpiecznikowa jako rozłącznik DC
- Napięcie akumulatora wyłączające UPS / jakie nowe akumulatory do UPS?
- nawigacja satelitarna
- SmartLife/Tuya i osuszanie -- mordowanie z zimną krwią...
- Głośnik piezoelektryczny
- Mala autonomiczna kamera monitoringu
- czas na emeryturę i EB
- Generowanie sumy kontrolnej z fragmentu pliku bin
- Re: Mala autonomiczna kamera monitoringu
Najnowsze wątki
- 2024-07-11 Tokarze CNC czyli ciężkie życie prototypiarza
- 2024-07-12 Zgody na przetwarzanie danych
- 2024-07-13 IObit Uninstaller Pro 13.6.0.5 Multilingual: Installation Guide
- 2024-07-12 stare graty młode kozy
- 2024-07-11 8080
- 2024-07-13 Przyłącze dolne grzejnika
- 2024-07-13 IObit Uninstaller Pro 13.6.0.5 Multilingual Overview
- 2024-07-12 Czym wykonać otwór fi 100 w betonie komórkowym?
- 2024-07-12 Warszawa => Senior Rust Software Engineer <=
- 2024-07-12 Warszawa => Business Unit Manager (Recruitment Business) <=
- 2024-07-12 Warszawa => Head of WMS Competence Center for IT&D Contract Logistics
- 2024-07-12 Warszawa => Head od WMS Competence Center dla IT&D (Blue Yonder) <=
- 2024-07-12 Kraków => Ruby Backend Developer <=
- 2024-07-12 Warszawa => UX/UI Designer <=
- 2024-07-12 Częstochowa => Specjalista ds. Marketingu (E-Commerce) <=