Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 30 mar 2026, o 19:42


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 
Autor Wiadomość
PostNapisane: 13 kwi 2014, o 18:21 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 15 lip 2012
Posty: 203
Lokalizacja: Sosnowiec
Pomógł: 2

Witam


Od jakiegoś czasu testuję swoją bibliotekę do czujnika ciśnienia MS5541 i zdziwiła mnie jedna rzecz, mianowicie ciśnienie mierzone w mbar-ach nigdy nie było niższe niż 1000 i nie wyższe niż 1016 (a dmuchałem mocno ;) Na dodatek mierzone ciśnienie skakało sobie np z 1000 na 1016 z niewiadomych przyczyn.
Po oględzinach kodu wyliczającego tą wartość znalazłem linijkę z błędem. Wszystkie składowe i wynik wyświetlałem na wyświetlaczu potem przepisywałem je do excela i liczyłem ponownie.
Wyniki się nie zgadzały.

tak wygląda ta linijka z funkcji pobierającej wyniki pomiarów i liczącej ciśnienie:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Wynik tego działania to 4790

natomiast gdy w tej samej funkcji zamiast tej linijki wstawiam:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

wynikiem jest 981 czyli prawidłowo.
Wszystkie wartości w obu przypadkach są takie same, dla testów podane na sztywno.

Czy ktoś wyjaśni mi skąd taka różnica ?

_________________
sig on ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 kwi 2014, o 18:44 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 10 mar 2013
Posty: 739
Lokalizacja: Poznań
Pomógł: 84

Jakiego typu są
data->D1 i data->OFF



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 kwi 2014, o 18:48 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 15 lip 2012
Posty: 203
Lokalizacja: Sosnowiec
Pomógł: 2

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
sig on ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 kwi 2014, o 19:16 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 10 mar 2013
Posty: 739
Lokalizacja: Poznań
Pomógł: 84

Przy odejmowaniu w nawiasie tych dwóch zmiennych
data->D1 i data->OFF wychodzi wynik ujemny
więc spróbuj zmienić im typ na int16_t czyli ze znakiem,

możliwe że tu tkwi błąd przy obliczeniach .


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 kwi 2014, o 20:52 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 15 lip 2012
Posty: 203
Lokalizacja: Sosnowiec
Pomógł: 2

Masz rację :D
Po zmianie typów tym 2 zmiennym działa dobrze.
Ale myślę że przy dużym ciśnieniu zmienna D1 może nie zmieścić się w typie int więc zastsowałem taki myk:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

też działa ;)

Teraz się zastanawiam czemu ja na to nie wpadłem...
Dzięki za pomoc !

_________________
sig on ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 kwi 2014, o 21:04 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 10 mar 2013
Posty: 739
Lokalizacja: Poznań
Pomógł: 84

Nie ma za co

Ja mam taką teorię w związku z tym dlaczego na to wpadłem
"Szczęśliwy strzał początkującego" ot i cała tajemnica :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 3 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO