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:
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
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
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".

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.

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