imu.c 905 B

12345678910111213141516171819202122232425262728293031
  1. #include "imu.h"
  2. bool imu_begin() {
  3. furi_hal_i2c_acquire(&furi_hal_i2c_handle_external);
  4. bool ret = lsm6dso_begin(); // lsm6ds3trc_begin();
  5. furi_hal_i2c_release(&furi_hal_i2c_handle_external);
  6. return ret;
  7. }
  8. void imu_end() {
  9. furi_hal_i2c_acquire(&furi_hal_i2c_handle_external);
  10. lsm6dso_end();
  11. furi_hal_i2c_release(&furi_hal_i2c_handle_external);
  12. }
  13. int imu_read(double* vec) {
  14. furi_hal_i2c_acquire(&furi_hal_i2c_handle_external);
  15. int ret = lsm6dso_read(vec); // lsm6ds3trc_read(vec);
  16. furi_hal_i2c_release(&furi_hal_i2c_handle_external);
  17. return ret;
  18. }
  19. void imu_scan_i2c() {
  20. unsigned int address;
  21. unsigned int *found;
  22. for(address = 1; address < 0xff; address++) {
  23. if(furi_hal_i2c_is_device_ready(&furi_hal_i2c_handle_external, address, 50)) {
  24. FURI_LOG_E(IMU_TAG, "<<<<<<<found Device>>>>>>> ID 0x%X", address);
  25. }
  26. }
  27. }