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



Teraz jest 29 mar 2024, o 13:17


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 17 ] 
Autor Wiadomość
PostNapisane: 1 maja 2018, o 14:37 
Offline
Nowy

Dołączył(a): 14 mar 2018
Posty: 7
Pomógł: 0

Cześć,

Do obsługi czujnika BMP280 chciałbym wykorzystać bibliotekę: https://github.com/BoschSensortec/BMP280_driver

Aby z niej skorzystać próbuję użyć funkcji TWI_read_buf oraz TWI_write_buf (z BB).

Kod do zainicjalizowania czujnika:

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


A więc próbowałem zrobić tak:

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


ale słusznie kompilator zwraca uwagę, że w/w funkcja nie zwraca wartości (więc takie przypisanie jest błędne).

Czy możecie zasugerować jakich funkcji użyć zamiast user_i2c_read/user_i2c_write?

[Edit]

Trochę poczytałem i postanowiłem użyć funkcji dla programowej obsługi I2C a więc: I2C_read_buf oraz I2C_write_buf.
Wygląda to lepiej ale nie wiem jak uzupełnić argumenty dla w/w funkcji.
Poniżej tabelka z noty PDF:

Obrazek

Powiedzmy, że chce odczytać ciśnienie, korzystając z funkicji I2C_read_buf więc:
1 argument, czyli adres urządzenia to 0x76 (SDO podłączone do GND)
2 argument, czyli adres komórki pamięci więc 0xF7 (MSB), 0xF8 (LSB), 0xF9 (XLSB)
3 argument, to długość, proszę o sugestię
4 argument, to bufor, czy struktura uint8_t buf[3] będzie odpowiednia?



Ostatnio edytowano 2 maja 2018, o 16:56 przez krzysztof_avr, łącznie edytowano 2 razy

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 maja 2018, o 16:40 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

Co to jest za rejestr 0xEC?
Coś chyba pomyliłeś......

_________________
Pomóżcie mi stanąć na nogi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 maja 2018, o 17:17 
Offline
Nowy

Dołączył(a): 14 mar 2018
Posty: 7
Pomógł: 0

Tak, racja, już poprawiłem. W przypadku gdy chce odczytać temperature stosuje 0xF7 (MSB), 0xF8 (LSB) oraz 0xF9 (XLSB), czy tak?
Jak w takim przypadku powinny wyglądać 2 ostanie argumenty funkcji I2C_read_buf?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 maja 2018, o 17:36 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

krzysztof_avr napisał(a):
Tak, racja, już poprawiłem. W przypadku gdy chce odczytać temperature stosuje 0xF7 (MSB), 0xF8 (LSB) oraz 0xF9 (XLSB), czy tak?
Jak w takim przypadku powinny wyglądać 2 ostanie argumenty funkcji I2C_read_buf?


Jak chcesz odczytać temperaturę to zaczynasz czytać od rejestru 0xFA natomiast dla ciśnienia od 0xF7.
Czytałeś o funkcji I2C_read_buf z BB? Dwa ostatnie argumenty to ilość(długość) i miejsce gdzie chcesz to zapisać więc jakiś buforek.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Funkcja odczytująca dane z rejestru temperatury może wyglądać tak
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Ale zanim odczytasz cokolwiek z czujnika musisz go najpierw zainicjalizować czyli wczytać parametry kalibracyjne i ustawić rejestr ctrl_meas - poczytaj w dokumentacji a jak czegoś nie będziesz wiedział to pytaj

_________________
Pomóżcie mi stanąć na nogi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 maja 2018, o 19:41 
Offline
Nowy

Dołączył(a): 14 mar 2018
Posty: 7
Pomógł: 0

W wątku obok znalazłem:

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

Czy tak jest poprawnie?

Wracając jeszcze do wspomnianej biblioteki (https://github.com/BoschSensortec/BMP280_driver).
Aby jej użyć należy napisać własną funkcję delay_ms:

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


Czy możesz zasugerować jak taka funkcja mogłaby wyglądać?



Ostatnio edytowano 2 maja 2018, o 16:57 przez krzysztof_avr, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 maja 2018, o 19:48 
Online
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27212
Lokalizacja: Szczecin
Pomógł: 1041

A kolega krzysztof_avr nie wie jak się wstawia listing kodów na forum? Nawet pomimo tego że jest instrukcja szczegółowa jak to się robi ?

topic7402.html

proszę edytować swoje posty i poprawić jeśli wątek ma istnieć ok ?

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 maja 2018, o 20:46 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

krzysztof_avr napisał(a):
TWI_write(0x76);//adres bmp


Kolego zacznijmy od tego co napisał P.Mirek
Po drugie to masz BB i bibliotekę do TWI ? Przeczytałeś ten rozdział?
Po trzecie adres układu to nie jest 0x76

_________________
Pomóżcie mi stanąć na nogi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 maja 2018, o 17:39 
Offline
Nowy

Dołączył(a): 14 mar 2018
Posty: 7
Pomógł: 0

Ad1. Przepraszam, poprawiłem.
Ad2. Tak.
Ad3. Zgodnie z tym co doczytałem w nocie PDF slave address do zapisu to w moim przypadku (SDO podłączone do GND) to 11101100 więc 0xEC.
Zgadza się?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 maja 2018, o 19:53 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

Tak adres się zgadza. Teraz zobacz co musisz najpierw wczytać z pamięci BMP - myślę o wartościach kalibracyjnych począwszy od adresu 0x88 skończywszy na 0xA1. Wartości te musisz sobie zapisać w jakiejś strukturze lub tablicy bo będą potrzebne do obliczeń. W następnej kolejności ustawiasz rejestr ctrl_meas w zależności od tego jak chcesz aby pracował czujnik. W nocie masz tabele.


Autor postu otrzymał pochwałę

_________________
Pomóżcie mi stanąć na nogi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 maja 2018, o 23:24 
Online
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27212
Lokalizacja: Szczecin
Pomógł: 1041

ja ze swojej strony polecam Yellowbooka

http://atnel.pl/wkuwamy-c-majsterkuj.html

wprawdzie tam pokazałem jak obsługiwać BMP180 ale na identycznej zasadzie można obsłużyć nowszy BMP280

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 maja 2018, o 15:40 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 sie 2013
Posty: 3797
Lokalizacja: Grudziądz
Pomógł: 143

Witam

Bawię się BMP280 i piszę do niego własną bibliotekę.
Dziś odczytałem wartości kalibracyjne z czujnika BMP280

Nie mniej nie mam zielonego pojęcia czy wartości liczbowe są prawidłowe.
Tj wiem że każdy czujnik jest kalibrowany w fabryce i te wartości będą różne nie mniej
zastanawiam się czy zakres tych wartości jest prawidłowy.

Wartości wyświetlam na UART za pomocą funkcji

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


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


czy ktoś z szanownych kolegów zna parametry kalibracyjne swojego czujnika BMP280 ?

_________________
Usługi druku przestrzennego - www.drumik.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 maja 2018, o 18:02 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

Parametry masz prawidłowe
Zresztą P6, P7, P8, i P9 są takie same jak w nocie. Ja miałem podobne wartości. Widzę, że poradzisz sobie sam ;)

_________________
Pomóżcie mi stanąć na nogi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 maja 2018, o 18:06 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 sie 2013
Posty: 3797
Lokalizacja: Grudziądz
Pomógł: 143

mczarny napisał(a):
Parametry masz prawidłowe
Zresztą P6, P7, P8, i P9 są takie same jak w nocie. Ja miałem podobne wartości. Widzę, że poradzisz sobie sam ;)


Bynajmniej :) zaraz po BMP280 będę pisał biblioteki do czujnika burzy :) więc jak coś możemy połączyć siły wspólnie :) chyba że już nad nimi pracujesz ?

_________________
Usługi druku przestrzennego - www.drumik.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 maja 2018, o 19:21 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

majster napisał(a):
Bynajmniej :) zaraz po BMP280 będę pisał biblioteki do czujnika burzy :) więc jak coś możemy połączyć siły wspólnie :) chyba że już nad nimi pracujesz ?


AS3935 mam teoretycznie rozpracowany, czekam na płytki bo tak jak Ci pisałem to maleństwo połączyć w pająku to trochę hardcore.
Patrzę na Twoją wartość "tfine" i z moich wzorów wychodzi 3,20*C. Porównywałeś temperaturę z DS-em ?

_________________
Pomóżcie mi stanąć na nogi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 maja 2018, o 20:12 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 sie 2013
Posty: 3797
Lokalizacja: Grudziądz
Pomógł: 143

Nie nie dopiero działam dalej.
Za chwilkę będę odczytywał temperaturę i ciśnienie więc będzie wszystko jasne.

_________________
Usługi druku przestrzennego - www.drumik.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 maja 2018, o 11:45 
Offline
Użytkownik

Dołączył(a): 19 sty 2014
Posty: 83
Pomógł: 2

Jeśli możecie podzielcie się waszymi rozwiązaniami, ja swój kod wrzuciłem tutaj. Projekt czeka na lepsze czasy.
topic18923.html



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 maja 2018, o 15:53 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

jaca_76 napisał(a):
Jeśli możecie podzielcie się waszymi rozwiązaniami, ja swój kod wrzuciłem tutaj. Projekt czeka na lepsze czasy.

Rozumiem, że chodzi Ci o AS3935?
To co przez tyle czasu nie uruchomiłeś scalaczka?

_________________
Pomóżcie mi stanąć na nogi



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: 17 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

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


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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO