Reduced FIFO packet size (18 bytes Optimized DMP initialization (less memory)

Dependents:   MPU6050-DMP_test_JJ

Fork of MPU6050-DMP-Ian by Ian Hua

Files at this revision

API Documentation at this revision

Comitter:
zcw607
Date:
Thu Feb 26 04:00:23 2015 +0000
Parent:
14:86afc8447df9
Commit message:
Reduced FIFO packet size (18 bytes); Optimized DMP initialization (less memory)

Changed in this revision

MPU/inc/MPU6050_6Axis_MotionApps20.h Show annotated file Show diff for this revision Revisions of this file
MPU/src/MPU6050_6Axis_MotionApps20.cpp Show annotated file Show diff for this revision Revisions of this file
diff -r 86afc8447df9 -r 4d3c598e3719 MPU/inc/MPU6050_6Axis_MotionApps20.h
--- a/MPU/inc/MPU6050_6Axis_MotionApps20.h	Wed May 14 12:41:19 2014 +0000
+++ b/MPU/inc/MPU6050_6Axis_MotionApps20.h	Thu Feb 26 04:00:23 2015 +0000
@@ -117,17 +117,18 @@
 #endif
 
 #define MPU6050_DMP_CODE_SIZE       1929    // dmpMemory[]
-#define MPU6050_DMP_CONFIG_SIZE     192     // dmpConfig[]
+#define MPU6050_DMP_CONFIG_SIZE     111     // dmpConfig[]
 #define MPU6050_DMP_UPDATES_SIZE    47      // dmpUpdates[]
+/* ================================================================================================ *
 
-/* ================================================================================================ *
- | Default MotionApps v2.0 42-byte FIFO packet structure:                                           |
+ | 18-byte FIFO packet structure:                                                                   |
  |                                                                                                  |
- | [QUAT W][      ][QUAT X][      ][QUAT Y][      ][QUAT Z][      ][GYRO X][      ][GYRO Y][      ] |
- |   0   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  |
+ | [QUAT W][      ][QUAT X][      ][QUAT Y][      ][QUAT Z][      ][FOOTER]                         |
+
+ |   0   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17                          |
  |                                                                                                  |
- | [GYRO Z][      ][ACC X ][      ][ACC Y ][      ][ACC Z ][      ][      ]                         |
- |  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41                          |
+
+
  * ================================================================================================ */
 
 // this block of memory gets written to the MPU on start-up, and it seems
@@ -283,18 +284,19 @@
     0x03,   0x7F,   0x06,   0x0C, 0xC9, 0x2C, 0x97, 0x97, 0x97, // FCFG_2 inv_set_accel_calibration
     0x03,   0x89,   0x03,   0x26, 0x46, 0x66,         // FCFG_7 inv_set_accel_calibration
     0x00,   0x6C,   0x02,   0x20, 0x00,               // D_0_108 inv_set_accel_calibration
-    0x02,   0x40,   0x04,   0x00, 0x00, 0x00, 0x00,   // CPASS_MTX_00 inv_set_compass_calibration
-    0x02,   0x44,   0x04,   0x00, 0x00, 0x00, 0x00,   // CPASS_MTX_01
-    0x02,   0x48,   0x04,   0x00, 0x00, 0x00, 0x00,   // CPASS_MTX_02
-    0x02,   0x4C,   0x04,   0x00, 0x00, 0x00, 0x00,   // CPASS_MTX_10
-    0x02,   0x50,   0x04,   0x00, 0x00, 0x00, 0x00,   // CPASS_MTX_11
-    0x02,   0x54,   0x04,   0x00, 0x00, 0x00, 0x00,   // CPASS_MTX_12
-    0x02,   0x58,   0x04,   0x00, 0x00, 0x00, 0x00,   // CPASS_MTX_20
-    0x02,   0x5C,   0x04,   0x00, 0x00, 0x00, 0x00,   // CPASS_MTX_21
-    0x02,   0xBC,   0x04,   0x00, 0x00, 0x00, 0x00,   // CPASS_MTX_22
+    //0x02,   0x40,   0x04,   0x00, 0x00, 0x00, 0x00,   // CPASS_MTX_00 inv_set_compass_calibration
+    //0x02,   0x44,   0x04,   0x00, 0x00, 0x00, 0x00,   // CPASS_MTX_01
+    //0x02,   0x48,   0x04,   0x00, 0x00, 0x00, 0x00,   // CPASS_MTX_02
+    //0x02,   0x4C,   0x04,   0x00, 0x00, 0x00, 0x00,   // CPASS_MTX_10
+    //0x02,   0x50,   0x04,   0x00, 0x00, 0x00, 0x00,   // CPASS_MTX_11
+    //0x02,   0x54,   0x04,   0x00, 0x00, 0x00, 0x00,   // CPASS_MTX_12
+    //0x02,   0x58,   0x04,   0x00, 0x00, 0x00, 0x00,   // CPASS_MTX_20
+    //0x02,   0x5C,   0x04,   0x00, 0x00, 0x00, 0x00,   // CPASS_MTX_21
+    //0x02,   0xBC,   0x04,   0x00, 0x00, 0x00, 0x00,   // CPASS_MTX_22
     0x01,   0xEC,   0x04,   0x00, 0x00, 0x40, 0x00,   // D_1_236 inv_apply_endian_accel
     0x03,   0x7F,   0x06,   0x0C, 0xC9, 0x2C, 0x97, 0x97, 0x97, // FCFG_2 inv_set_mpu_sensors
     0x04,   0x02,   0x03,   0x0D, 0x35, 0x5D,         // CFG_MOTION_BIAS inv_turn_on_bias_from_no_motion
+    //0x04,   0x02,   0x03,   0x98, 0x98, 0x98,         // CFG_MOTION_BIAS inv_turn_off bias correction
     0x04,   0x09,   0x04,   0x87, 0x2D, 0x35, 0x3D,   // FCFG_5 inv_set_bias_update
     0x00,   0xA3,   0x01,   0x00,                     // D_0_163 inv_set_dead_zone
                  // SPECIAL 0x01 = enable interrupts
@@ -302,13 +304,13 @@
     0x07,   0x86,   0x01,   0xFE,                     // CFG_6 inv_set_fifo_interupt
     0x07,   0x41,   0x05,   0xF1, 0x20, 0x28, 0x30, 0x38, // CFG_8 inv_send_quaternion
     0x07,   0x7E,   0x01,   0x30,                     // CFG_16 inv_set_footer
-    0x07,   0x46,   0x01,   0x9A,                     // CFG_GYRO_SOURCE inv_send_gyro
-    0x07,   0x47,   0x04,   0xF1, 0x28, 0x30, 0x38,   // CFG_9 inv_send_gyro -> inv_construct3_fifo
-    0x07,   0x6C,   0x04,   0xF1, 0x28, 0x30, 0x38,   // CFG_12 inv_send_accel -> inv_construct3_fifo
-    0x02,   0x16,   0x02,   0x00, IMU_FIFO_RATE_DIVIDER                // D_0_22 inv_set_fifo_rate
+    //0x07,   0x46,   0x01,   0x9A,                     // CFG_GYRO_SOURCE inv_send_gyro
+    //0x07,   0x47,   0x04,   0xF1, 0x28, 0x30, 0x38,   // CFG_9 inv_send_gyro -> inv_construct3_fifo
+    //0x07,   0x6C,   0x04,   0xF1, 0x28, 0x30, 0x38,   // CFG_12 inv_send_accel -> inv_construct3_fifo
+    0x02,   0x16,   0x02,   0x00, 0x03                // D_0_22 inv_set_fifo_rate // Original 0x01
 
-    // This very last 0x01 WAS a 0x09, which drops the FIFO rate down to 20 Hz. 0x07 is 25 Hz,
-    // 0x01 is 100Hz. Going faster than 100Hz (0x00=200Hz) tends to result in very noisy data.
+
+
     // DMP output frequency is calculated easily using this equation: (200Hz / (1 + value))
 
     // It is important to make sure the host processor can keep up with reading and processing
diff -r 86afc8447df9 -r 4d3c598e3719 MPU/src/MPU6050_6Axis_MotionApps20.cpp
--- a/MPU/src/MPU6050_6Axis_MotionApps20.cpp	Wed May 14 12:41:19 2014 +0000
+++ b/MPU/src/MPU6050_6Axis_MotionApps20.cpp	Thu Feb 26 04:00:23 2015 +0000
@@ -240,8 +240,8 @@
             //DEBUG_PRINT("Disabling DMP (you turn it on later)...\n");
             setDMPEnabled(false);
 
-            //DEBUG_PRINT("Setting up internal 42-byte (default) DMP packet buffer...\n");
-            dmpPacketSize = 42;
+            //DEBUG_PRINT("Setting up internal 18-byte (default) DMP packet buffer...\n");
+            dmpPacketSize = 18; // original 42 bytes;
             /*if ((dmpPacketBuffer = (uint8_t *)malloc(42)) == 0) {
                 return 3; // TODO: proper error code for no memory
             }*/