The MPU9150s biggest selling point was its internal Motion Processor to offload the sensor fusion from the host processor, this library uploads the firmware to generate quaternions from the sensors. The API needs work but as other libraries don't support the DMP supplying as is.

Dependents:   MPU9150_Example CANSAT_COMBINED MPU9150_Example mbed_rifletool

Files at this revision

API Documentation at this revision

Comitter:
p3p
Date:
Mon Sep 01 13:35:07 2014 +0000
Parent:
0:74f0ae286b03
Child:
2:e523a92390b6
Commit message:
commented out debug messages

Changed in this revision

MPU9150.cpp Show annotated file Show diff for this revision Revisions of this file
MPU9150.h Show annotated file Show diff for this revision Revisions of this file
--- a/MPU9150.cpp	Sun Aug 31 12:52:29 2014 +0000
+++ b/MPU9150.cpp	Mon Sep 01 13:35:07 2014 +0000
@@ -67,32 +67,23 @@
     reset();
     wait_ms(20);
     sleep(false);
-    
-//does this exist in the 9150?
-    char product[6] = {0,0,0,0,0,0};
-    read(0x77, product, 6 );
-    int rev = ((product[5] & 0x01) << 2) | ((product[3] & 0x01) << 1) |
-        (product[1] & 0x01);
-    debug.printf("%02X, %02X, %02X, %02X, %02X, %02X\r\n", product[0], product[1], product[2], product[3], product[4], product[5]);   
-    debug.printf("Product Revision: %d\r\n", rev);
-
 
     setMemoryBank(0x10, true, true);
     setMemoryStartAddress(0x06);
-    debug.printf("Hardware Version: %d\r\n", readMemoryByte());
+//    debug.printf("Hardware Version: %d\r\n", readMemoryByte());
 
     setMemoryBank(0);
     // check OTP bank valid
     uint8_t otpValid = getOTPBankValid();
-    debug.printf("optValid: %d\r\n", otpValid);
+//    debug.printf("optValid: %d\r\n", otpValid);
     
     //Enabling interrupt latch, clear on any read, AUX bypass enabled
     write(MPU6050_RA_INT_PIN_CFG, 0x32);
     
     if (writeMemoryBlock(dmpMemory, MPU6050_DMP_CODE_SIZE, 0 ,0, true)) {
-        debug.printf("Success! DMP code written and verified.\r\n");
+ //       debug.printf("Success! DMP code written and verified.\r\n");
         if (writeDMPConfigurationSet(dmpConfig, MPU6050_DMP_CONFIG_SIZE)) {
-            debug.printf("Success! DMP configuration written and verified.\r\n");
+//            debug.printf("Success! DMP configuration written and verified.\r\n");
             setIntDMPEnabled(true);
             setInterruptFifoOverflowEnable(true);
             setSampleRateDivider(4);
@@ -208,7 +199,7 @@
             
             setDMPEnabled(false);
             
-            debug.printf("finished\r\n");
+ //           debug.printf("finished\r\n");
 
         }
     }
@@ -609,10 +600,10 @@
     
         // make sure this chunk doesn't go past the bank boundary (256 bytes)
         if (chunkSize > 256 - address) chunkSize = 256 - address;
-        debug.printf("reading %d", chunkSize);
+        //debug.printf("reading %d", chunkSize);
         // read the chunk of data as specified
         read(MPU6050_RA_MEM_R_W, (char*)(data+i), chunkSize);
-        debug.printf("read");
+        //debug.printf("read");
         // increase byte index by [chunkSize]
         i += chunkSize;
     
@@ -658,7 +649,7 @@
             read(MPU6050_RA_MEM_R_W, (char*)verifyBuffer, chunkSize);
             if (memcmp(progBuffer, verifyBuffer, chunkSize) != 0) {
                 free(verifyBuffer);
-                debug.printf("invalid(%d, %d)\r\n", bank, read_errors, write_errors);
+                //debug.printf("invalid(%d, %d)\r\n", bank, read_errors, write_errors);
                 return false; // uh oh.
             }
         }
@@ -757,7 +748,7 @@
     
 int16_t MPU9150::get16(char reg_addr){
     char data[2];
-    if(!read(reg_addr, data, 2))debug.printf("get16: read fail:%02X\r\n", reg_addr);
+    read(reg_addr, data, 2);
     return (data[0]<<8) + data[1];
 }
 
@@ -778,7 +769,7 @@
     for(int i = 0; i < length; i++) {
         if(!i2c.write(data[i])){
             write_errors++;
-            debug.printf("Write Error %d\r\n", reg_addr);
+            //debug.printf("Write Error %d\r\n", reg_addr);
             return false;
         }
     }
@@ -814,12 +805,12 @@
 bool MPU9150::read(char reg_addr, char* data, int length){
     if(i2c.write(device_address << 1, &reg_addr, 1, true)){
         read_errors ++;
-        debug.printf("Read: Address Write Error %d\r\n", reg_addr);
+        //debug.printf("Read: Address Write Error %d\r\n", reg_addr);
         return false;
     }
     if(i2c.read(device_address << 1, data, length)){
         read_errors ++;
-        debug.printf("Read: Error %d\r\n", reg_addr);
+        //debug.printf("Read: Error %d\r\n", reg_addr);
         return false;
     }
     return true;
--- a/MPU9150.h	Sun Aug 31 12:52:29 2014 +0000
+++ b/MPU9150.h	Mon Sep 01 13:35:07 2014 +0000
@@ -5,7 +5,8 @@
 #include "registers.h"
 #include "dmpdata.h"
 //https://github.com/sparkfun/MPU-9150_Breakout/blob/master/firmware/MPU6050/MPU6050_9Axis_MotionApps41.h
-extern Serial debug;
+
+//extern Serial debug;
 
 class MPU9150{
 public: