Pracuję z akcelerometrem ADXL345. Dołączyłem go przez SPI z częstotliwością tej szyny 4MHz. Ustawiłem sampling rate na 400Hz. Jednak mam dokładnie 100sps i to przy dowolnie nastawionym sampling rate w rejestrze BW_REGISTER. Nie włączałem kolejki FIFO - ustawiłem bypass mode.
Program mam aktualnie niezwykle prymitywny. Jedyne co w nim robię, to konfiguruję SPI, UART (57600b/s) i ADXL345. Potem w pętli odczytuję dane z czujnika. Ustawiłem linię INT1 ADXL345, tak by uzyskać tam stan wysoki w momencie, gdy dane są gotowe do odczytu (opcja DATA READY). Kiedy jest stan wysoki na tej linii, to rozpoczynam odczyt i kolejno wysyłanie bajtów z wszystkich osi przez UART. Pracuje to poprawnie. Wartości z poszczególnych osi prawidłowo się zmieniają.
Faktyczny sampling rate sprawdziłem poprzez pomiar częstotliwości sygnału na linii INT1. Jasne, że linia ta ustawia się w momencie pojawienia się danych do odczytu i automatycznie kasuje po ich odczytaniu. Przeanalizowałem oczywiście pracę całego interfejsu oscyloskopem.
Program mam aktualnie niezwykle prymitywny. Jedyne co w nim robię, to konfiguruję SPI, UART (57600b/s) i ADXL345. Potem w pętli odczytuję dane z czujnika. Ustawiłem linię INT1 ADXL345, tak by uzyskać tam stan wysoki w momencie, gdy dane są gotowe do odczytu (opcja DATA READY). Kiedy jest stan wysoki na tej linii, to rozpoczynam odczyt i kolejno wysyłanie bajtów z wszystkich osi przez UART. Pracuje to poprawnie. Wartości z poszczególnych osi prawidłowo się zmieniają.
Faktyczny sampling rate sprawdziłem poprzez pomiar częstotliwości sygnału na linii INT1. Jasne, że linia ta ustawia się w momencie pojawienia się danych do odczytu i automatycznie kasuje po ich odczytaniu. Przeanalizowałem oczywiście pracę całego interfejsu oscyloskopem.