-
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
- Pomiar amplitudy w zegarku mechanicznym
- ale zawziętość i cierpliwość
- Chiński elektrolizer tester wody
- Dzisiaj Bentlejem czyli przybieżeli sześciu Króli do Rysia na kasie
- ciekawy układ magnetofonu
- Mikroskop 3D
- Jak być bezpiecznym z Li-Ion?
- Szukam monitora HDMI ok. 4"
- Obcinaczki z łapaczem
- termostat do lodowki
- SEP 1 kV E
- Aku LiPo źródło dostaw - ktoś poleci ?
- starość nie radość
- Ataki hakerskie
- Akumulatorki Ni-MH AA i AAA Green Cell
Najnowsze wątki
- 2024-12-30 Katowice => Key Account Manager (ERP) <=
- 2024-12-28 Śmiechu KOOOOOOPA ;-)
- 2024-12-29 Pomiar amplitudy w zegarku mechanicznym
- 2024-12-28 Antyradar
- 2024-12-28 Deweloper przegral w sadzie musi zwrócic pieniądze Posypia sie kolejne pozwy?
- 2024-12-28 Warszawa => Full Stack .Net Engineer <=
- 2024-12-28 Warszawa => Sales Assistant <=
- 2024-12-28 Warszawa => Programista Full Stack .Net <=
- 2024-12-28 Warszawa => Full Stack web developer (obszar .Net Core, Angular6+) <=
- 2024-12-28 Katowice => Head of Virtualization Platform Management and Operating S
- 2024-12-28 Błonie => Analityk Systemów Informatycznych (TMS SPEED) <=
- 2024-12-28 Warszawa => Senior Frontend Developer (React + React Native) <=
- 2024-12-28 Żerniki => Employer Branding Specialist <=
- 2024-12-28 ale zawziętość i cierpliwość
- 2024-12-27 most kilometrowy