Jak wytłumaczyć takie zachowanie. Odczyt z czujnika.

0

Mam funkcję get_gyro_sensor() i pewien czujnik. Pomiary zapisuję do zmiennej ośmiobitowej bez znaku.

unsigned char gyro_x;
gyro_x = get_gyro_sensor();

Wszystko działa tak jak powinno, ale zastanawia mnie zachowanie gdy fizycznie odłączę czujnik od procesora. Wówczas zwracana wartość jest równa 255. Pytanie dlaczego? Czy ma to jakiś związek z architekturą procesora? Little endian lub Big endian?

2

sprawdz co robi funkcja get_gyro_sensor. Sprawdz jej dokumentacje, sprawdz wlasnie co sie stanie gdy nie bedzie wstanie odczytac zadnego wyniku

2

patrząc na nazwę tego API, to powiedziałbym, że get_gyro_sensor zwraca identyfikator dostępnego sensora (albo sensora, który wykrył zmianę orientacji, bo zwykle powinny być 3 sensory), a nie pomiar.
W przypadku braku sensora zwraca kod błędu -1.
Ty masz dokumentację tego czegoś, więc lepiej ją doczytaj, bo wszelkie poszlaki wskazują, że nawet tam nie zajrzałeś i programujesz jedyni metodą prób i błędów (programowanie permutacyjne).

A problem little/big endian to pojawia się w momencie, gdy:

  • masz daną większą niż jeden bajt
  • gdy sam obsługujesz dane pobrane bezpośrednio z sensora, a nie kiedy używasz gotowej biblioteki.
0

To jest żyroskop tochę stary, bo jednoosiowy. Dokumentacji praktycznie nie ma. Tylko mogę przeczytać, że funkcja zwraca kąt pochylenia względem punktu odniesienia(potrzebna kalibracja).Czujnik działa na magistrali I2C.

1

To podaj dokładne nazwy sprzętu, systemu/biblioteki jakiego używasz.
Może nie googlowałeś za dobrze? Może ktoś inny tutaj ma taką dokumentację?
Albo wklej zawartość nagłówka w którym jest zadeklarowana ta funkcja get_gyro_sensor!
Jeśli chcesz pomocy to potrzebny nam jest jakiś konkretny punkt zaczepienia.

0

mozesz tez wyslac libke z ta funkcja, moze ktos zrobi RE na tym i zobaczy co sie tam dzieje

1 użytkowników online, w tym zalogowanych: 0, gości: 1