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



Teraz jest 31 mar 2020, o 11:46


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 
Autor Wiadomość
PostNapisane: 17 gru 2017, o 14:27 
Offline
Nowy

Dołączył(a): 29 paź 2015
Posty: 6
Pomógł: 0

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?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 gru 2017, o 15:03 
Offline
Użytkownik

Dołączył(a): 25 lip 2013
Posty: 2058
Pomógł: 97

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 gru 2017, o 15:23 
Offline
Użytkownik

Dołączył(a): 07 cze 2016
Posty: 518
Pomógł: 131

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 postu otrzymał pochwałę

_________________
Miksowanie kodu C i ASM przy użyciu GCC



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 gru 2017, o 22:17 
Offline
Nowy

Dołączył(a): 29 paź 2015
Posty: 6
Pomógł: 0

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.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 gru 2017, o 23:39 
Offline
Moderator
Avatar użytkownika

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

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

_________________
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: 19 gru 2017, o 18:11 
Offline
Nowy

Dołączył(a): 29 paź 2015
Posty: 6
Pomógł: 0

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 ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 gru 2017, o 18:43 
Offline
Moderator
Avatar użytkownika

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

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.

_________________
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: 21 gru 2017, o 21:38 
Offline
Nowy

Dołączył(a): 29 paź 2015
Posty: 6
Pomógł: 0

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?



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

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