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

Wskaźnikowa incepcja (do kwadratu)
https://forum.atnel.pl/topic23402.html
Strona 1 z 1

Autor:  amilo_pa [ 26 paź 2020, o 00:15 ]
Tytuł:  Wskaźnikowa incepcja (do kwadratu)

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 ? :)

Autor:  amilo_pa [ 26 paź 2020, o 01:22 ]
Tytuł:  Re: Wskaźnikowa incepcja (do kwadratu)

Problem rozwiazany :)

Autor:  micky [ 26 paź 2020, o 07:52 ]
Tytuł:  Re: Wskaźnikowa incepcja (do kwadratu)

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

Autor:  fofex [ 26 paź 2020, o 08:09 ]
Tytuł:  Re: Wskaźnikowa incepcja (do kwadratu)

Zdefiniuj słowo "incepcja".

Autor:  amilo_pa [ 27 paź 2020, o 17:32 ]
Tytuł:  Re: Wskaźnikowa incepcja (do kwadratu)

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

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