Witam.
Napisałem prosty program do odbioru danych z akcelerometru MMA7455L. W zasadzie chcę odebrać tylko 8 bits output value X adres: $06. Jednak na wyjściu funkcji read_czujnik() dostaje wartość 9C która zapewne nie jest przypadkowo wartością wpisywaną w TWI_write(0x9C); na chwilę przed odbiorem.
main.c
TWI_lib.c
Więc to co się dzieje ja widzę tak:
Wysyłam sygnał START potem wpisuje adres urządzenia 0x1C bo do pinu 4 podłączone jest GND i najbardziej znaczący bit jest 0 aby wpisać dane.
Następnie wpisujemy adres danej którą chcemy odczytać. Następnie znowu wysyłamy start i adres urządzenia 0x9C bo bit 7 jest teraz jedynką aby slave wysłał nam dane. Odczytujemy dane i zwracamy wartość. Ale czemu zwrócona wartość to 9C ?
Napisałem prosty program do odbioru danych z akcelerometru MMA7455L. W zasadzie chcę odebrać tylko 8 bits output value X adres: $06. Jednak na wyjściu funkcji read_czujnik() dostaje wartość 9C która zapewne nie jest przypadkowo wartością wpisywaną w TWI_write(0x9C); na chwilę przed odbiorem.
main.c
Kod: C / C++
TWI_lib.c
Kod: C / C++
Więc to co się dzieje ja widzę tak:
Wysyłam sygnał START potem wpisuje adres urządzenia 0x1C bo do pinu 4 podłączone jest GND i najbardziej znaczący bit jest 0 aby wpisać dane.
Następnie wpisujemy adres danej którą chcemy odczytać. Następnie znowu wysyłamy start i adres urządzenia 0x9C bo bit 7 jest teraz jedynką aby slave wysłał nam dane. Odczytujemy dane i zwracamy wartość. Ale czemu zwrócona wartość to 9C ?