SmartWheels self-driving race car. Designed for NXP Cup. Uses FRDM-KL25Z, area-scan camera, and simple image processing to detect and navigate any NXP spec track.

Dependencies:   TSI USBDevice mbed-dev

Fork of SmartWheels by haofan Zheng

Revision:
62:bc5caf59fe39
Parent:
59:b709711bc566
Child:
63:d9a81b3d69f5
--- a/Hardwares/IMUManager.h	Sat Apr 08 17:40:13 2017 +0000
+++ b/Hardwares/IMUManager.h	Sun Apr 09 18:20:57 2017 +0000
@@ -27,18 +27,37 @@
     #error Must choose a SA0 and SA1 value for Accel and Mag
 #endif
 
-#define FXOS8700CQ_STATUS 0x00
+#define FXOS8700CQ_STATUS       0x00
+
+#define FXOS8700CQ_F_SETUP      0x09
 
-#define FXOS8700CQ_WHOAMI 0x0D
-#define FXOS8700CQ_WHOAMI_VAL 0xC7
+#define FXOS8700CQ_SYSMOD       0x0B
+
+#define FXOS8700CQ_WHOAMI       0x0D
+#define FXOS8700CQ_WHOAMI_VAL  0xC7
 
 #define FXOS8700CQ_XYZ_DATA_CFG 0x0E
+#define FXOS8700CQ_XYZ_DATA_2G 0x00
+#define FXOS8700CQ_XYZ_DATA_4G 0x01
+#define FXOS8700CQ_XYZ_DATA_8G 0x02
 
-#define FXOS8700CQ_CTRL_REG1 0x2A
+#define FXOS8700CQ_XYZ_DATA_SC FXOS8700CQ_XYZ_DATA_2G
 
-#define FXOS8700CQ_M_CTRL_REG1 0x5B
+#if FXOS8700CQ_XYZ_DATA_SC == FXOS8700CQ_XYZ_DATA_2G
+    #define ACCELER_SCALE_F 0.000244f
+#elif FXOS8700CQ_XYZ_DATA_SC == FXOS8700CQ_XYZ_DATA_4G
+    #define ACCELER_SCALE_F 0.000488f
+#elif FXOS8700CQ_XYZ_DATA_SC == FXOS8700CQ_XYZ_DATA_8G
+    #define ACCELER_SCALE_F 0.000976f
+#else
+    #error Must define a scale for accelerometer!
+#endif
 
-#define FXOS8700CQ_M_CTRL_REG2 0x5C
+#define FXOS8700CQ_CTRL_REG1    0x2A
+
+#define FXOS8700CQ_M_CTRL_REG1  0x5B
+
+#define FXOS8700CQ_M_CTRL_REG2  0x5C
 
 #define FXOS8700CQ_READ_LEN 13 // status plus 6 channels = 13 bytes
 
@@ -50,9 +69,9 @@
 
 struct imu_vec3
 {
-    uint16_t x;
-    uint16_t y;
-    uint16_t z;
+    float x;
+    float y;
+    float z;
 };
 
 uint8_t imu_manager_init();
@@ -61,7 +80,7 @@
 
 const volatile struct imu_vec3* imu_manager_get_accl();
 
-const volatile struct imu_vec3* imu_manager_get_magt();
+//const volatile struct imu_vec3* imu_manager_get_magt();
 
 #ifdef __cplusplus
 }