ATNEL tech-forum
https://forum.atnel.pl/

BMP280 Atmega8A I2C komunikacja
https://forum.atnel.pl/topic19820.html
Strona 1 z 1

Autor:  mateur [ 17 gru 2017, o 14:27 ]
Tytuł:  BMP280 Atmega8A I2C komunikacja

Witam!
Zwracam się z prośbą o pomoc w temacie komunikacji procesora Atmega8A poprzez sprzętowy interfejs I2C z czujnikiem temperatury i ciśnienia BMP280. Przy próbie jego inicjalizacji program "utyka" gdzieś po drodze. Dodam, że do magistrali I2C podłączony jest również zegar czasu rzeczywistego PCF8583, który korzystając z tych samych funkcji komunikacyjnych działa wyśmienicie. Poniżej odchudzony do minimum kod programu, którym próbuję testować wspomniany czujnik - niestety bez rezultatów.

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


Czy, któryś z szanownych kolegów miał już do czynienia ze wspomnianym czujnikiem, w podobnej konfiguracji i zechce się pochylić nad moim problemem?

Autor:  micky [ 17 gru 2017, o 15:03 ]
Tytuł:  Re: BMP280 Atmega8A I2C komunikacja

A próbowałeś odpalić Mirkowy I2C skaner, żeby zobaczyć czy w ogóle scalak jest widoczny na magistrali? Masz BB?

Autor:  andrews [ 17 gru 2017, o 15:23 ]
Tytuł:  Re: BMP280 Atmega8A I2C komunikacja

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


Zacząłbym od zmiany adresu. Adres BMP280 powinien wynosić 0xEC dla zapisu i 0xED dla odczytu lub 0xEE dla zapisu i 0xEF dla odczytu, w zależności od podłączenia pinu SDO.

Zwykle, kiedy w dokumentacji podawany jest 7-bitowy adres układu I2C, należy przesunąć go o jeden bit w lewo i później najmniej znaczący bit ustawić zgodnie z kierunkiem transmisji R=1/W=0. Czasami podawany jest adres ośmiobitowy z bitem R/W równym zero (zapis), a czasami podawane są dwa odrębne adresy ośmiobitowe osobno dla zapisu i odczytu.

Autor:  mateur [ 18 gru 2017, o 22:17 ]
Tytuł:  Re: BMP280 Atmega8A I2C komunikacja

Dziękuję za odpowiedzi. Po zmianie adresu na 0xEC program nie "utyka" w jednym miejscu. Mam jednak problemy z odczytaniem wartości zmierzonych przez czujnik. Wynik wyświetlam na jednej cyfrze wyświetlacza 7-seg (wymagania projektowe) i jedyne co udaje mi się uzyskać to kolejne wyświetlanie 0, 0, 8 - co miało by odpowiadać 00,8*C. Poniżej znowu odchudzony kod tym razem jednak z funkcjami do odczytu danych z czujnika:


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


Sam czujnik z pewnością jest w porządku - sprawdzone na ESP8266, który leży obok i odczytuje temperaturę i ciśnienie gdy podłączę do niego czujnik. Magistrala I2C również funkcjonuje bo we właściwym kodzie używam jeszcze RTC na PCF8583 z którym atmega komunikuje się bez przeszkód.

Może któryś z szanownych kolegów bawił się już BMP280 w podobny sposób? Będę wdzięczny za wszelkie wskazówki.

Autor:  mirekk36 [ 18 gru 2017, o 23:39 ]
Tytuł:  Re: BMP280 Atmega8A I2C komunikacja

Masz Bluebooka - czemu nie stosujesz funkcji TWI_write_buf() i TWI_read_buf() ??? ... tylko piszesz program liniowo tworząc sobie hektolitry problemów. Zamiast korzystać z bibliotek jak się należy to ty peklujesz WSZYSTKO w jeden plik jak w Bascomie ... toż to masakrung wychodzi a później sam nie możesz znaleźć błędów - warto jednak korzystać z Bluebooka mówię ci, tym bardziej, że go masz pod ręką

Poza tym masz babola w twi_stop - wywal wykrzyknik

Autor:  mateur [ 19 gru 2017, o 18:11 ]
Tytuł:  Re: BMP280 Atmega8A I2C komunikacja

Korzystając z BB poszedłem za radą aby gdy coś nie działa stworzyć sobie coś ultra prostego co działać musi - stąd też ten nieładny kod "na piechotę i do kupy". Pomyślałem sobie, że jeśli ktoś zechce przejrzeć co tam naskrobałem przeleci sobie od góry do dołu i np stwierdzi: TWI jest, adresy się zgadzają, funkcje ok, ale chwila chwila tu jest babol... i mnie o tym życzliwie poinformuje.
A jeśli chodzi o funkcję TWI_stop to:

Obrazek

Wykrzyknik jednak nie potrzebny? Mam wydanie 1 ;)

Autor:  mirekk36 [ 19 gru 2017, o 18:43 ]
Tytuł:  Re: BMP280 Atmega8A I2C komunikacja

mateur napisał(a):
Wykrzyknik jednak nie potrzebny? Mam wydanie 1


No więc chyba warto zaglądać na stronę wydawnictwa? tak czy nie ?

http://atnel.pl/uaktualnienia-programow-do-dvd.html

zajrzyj

tak samo tutaj:

http://atnel.pl/errata.html

gdzie masz PDF z erratą i jest to jak pokazane wyraźnie.

Autor:  mateur [ 21 gru 2017, o 21:38 ]
Tytuł:  Re: BMP280 Atmega8A I2C komunikacja

mirekk36 napisał(a):
No więc chyba warto zaglądać na stronę wydawnictwa? tak czy nie ?

Tak.

Wracając do tematu..
Komunikacja działa - odczytuję bajty z czujnika. Na początek wziąłem się za temperaturę. 20-bitowa wartość odczytanej temperatury, którą poskładałem z bajtów MSB, LSB i XLSB przybiera spodziewane wartości i zmienia się w prawidłowy sposób (płynnie rośnie po ogrzaniu i płynnie spada przy ochłodzeniu czujnika). Pozostaje jedynie tą zmienną przekonwertować wg. formuły z noty jednak natrafiam na pewne trudności.

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


Czy któryś z szanownych kolegów ma napisaną, działającą formułę dla konwersji temperatury (a przy okazji i dla ciśnienia)? Ewentualnie widzi problem w tej dołączonej?

Strona 1 z 1 Strefa czasowa: UTC + 1
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/