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



Teraz jest 28 mar 2024, o 22:18


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
Autor Wiadomość
PostNapisane: 26 paź 2020, o 00:15 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 kwi 2014
Posty: 150
Pomógł: 1

Cześć wszystkim:)

Mam taki problem, bawię się czujnikem BMP280 i piszę do niego swoją własną bibliotekę.
Czujnik ten może rozmawiać z uP przez dwa protokoły I2C oraz SPI. Bibliotekę chcę tak przygotować, aby wystarczyło zmienić dwa parametry i na ich podstawie automatycznie kompilował się kod z obsługą SPI lub I2C.
Tyle wstępu teraz czas na opis problemu :)

Mamy fragment funkcji, za pomcą któej konfiguruję parametry pracy czujnika. Po zapisaniu parametrów (wywołąnie funkcji BMP280_write_data) chcę je odczytać (wywołanie funkcji BMP280_read_data) z czujnika i sprawdzić czy poprawnie się zapisały:

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


Funkcja BMP280_read_data jest sparametryzowana i w zalożności od stanu zmiennych BMP280_I2C oraz BMP280_SPI kompilowana jest odpowiednia funkcja do obsługi magistra

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


A tak wygląda funkcja odczytująca odebrane dane po SPI

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


I teraz tak, w funkcji BMP280_Conf (pierwsza u samej góry) w linijce trzynastej przekazuje adres pierwszego elementu tablicy buf do funkcji BMP280_read_data - i moim życzeniem jest, aby do tej tablicy trafiły odczytane wartości z magistrali SPI.
Funkcja BMP280_read_data przekazuje ten nr rejestru (adres pierwszego elementu tablicy buf) do funkcji SPI_ReceiveData, a w niej dane otrzymane po SPI zapisuję do wskaźnika Dane - linijka 13.
Niestety, w efekcie takiej incepscji wskaźnikó moja tablica buf ma wartości "0".
Obrazek
Co ciekawe, incepcja wskaźnikowa działa poprawnie w przypadku podania adresu uni (patrz linijka 14 w funkcji BMP280_Conf ). W uni poprawnie lądują wszystkie wartości odczytane z SPI.
Obrazek

Może mi ktoś podpowie gdzie robię błąd ? :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 paź 2020, o 01:22 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 kwi 2014
Posty: 150
Pomógł: 1

Problem rozwiazany :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 paź 2020, o 07:52 
Offline
Użytkownik

Dołączył(a): 25 lip 2013
Posty: 2561
Pomógł: 126

To napisz w jaki sposób to rozwiązałeś, wszyscy jesteśmy ciekawi.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 paź 2020, o 08:09 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 lis 2019
Posty: 147
Pomógł: 37

Zdefiniuj słowo "incepcja".

_________________
Think for yourself and question authority.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 paź 2020, o 17:32 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 kwi 2014
Posty: 150
Pomógł: 1

Rozwiązaniem problemu okazało się brak kodu odpowiedzialnego za pobranie pierwszego pakietu danych w funkcji

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


A tak powinna wyglądać:

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


czyli funkcja SPI_ReceiveData do pierwszego elementu tablicy były pobierane dane z chwili w której był wysyłany adres od którego chcemy czytać rejestry czujnika

ObrazekObrazek

a tak wyglądają dane po dodaniou brakującego kodu:
ObrazekObrazek

------------------------ [ Dodano po: kilkunastu sekundach ]

fofex napisał(a):
Zdefiniuj słowo "incepcja".



Polecam film o tym samym tytule, dokładnie wyjaśni na czym rzecz polega :)



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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Google [Bot] i 9 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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO