Works with 8g

Fork of MMA8452 by Ashley Mills

Files at this revision

API Documentation at this revision

Comitter:
nherriot
Date:
Wed Oct 16 18:55:16 2013 +0000
Parent:
4:27aa3cd43234
Child:
6:f6bde04bf8be
Child:
7:8aa5123d403f
Commit message:
adding method for getting control reg 1.;

Changed in this revision

MMA8452.cpp Show annotated file Show diff for this revision Revisions of this file
MMA8452.h Show annotated file Show diff for this revision Revisions of this file
--- a/MMA8452.cpp	Wed Oct 16 16:26:26 2013 +0000
+++ b/MMA8452.cpp	Wed Oct 16 18:55:16 2013 +0000
@@ -57,6 +57,39 @@
 }
 
 
+// Get 'Fast Read Mode' called F_READ. If bit 1 is set '1' then F_READ is active. Fast read will skip LSB when reading xyz
+// resisters from 0x01 to 0x06. When F_READ is '0' then all 6 registers will be read.
+
+int Accelerometer_MMA8452::get_CTRL_Reg1(int& CTRL_Reg)
+{
+{
+    char mcu_address = (MMA8452_ADDRESS<<1);
+    m_i2c.start();
+    if( m_i2c.write( mcu_address & 0xFE) == 0)          // just good practice to force bit 1 to a '0' by ANDing with 0xFE
+    {
+        return 1;                                       // we failed to write the mcu address on the bus to initiate dialogue 
+    }
+    if( m_i2c.write( CTRL_REG_1) == 0) 
+    {
+        return 1;                                       // we failed to write 'status' to the chip
+    }
+    m_i2c.start();
+    if( m_i2c.write( mcu_address | 0x01) == 0)          // this is asking to read the slave mcu address - even though it's a 'write' method!!! Crap API...
+    {
+        return 1;                                       // we failed to request a read from that mcu - this really is just writing the mcu vaule on the bus
+    }
+    CTRL_Reg  = m_i2c.read(0);
+    m_i2c.stop();
+    return 0;
+    
+
+}
+
+
+
+
+}
+
 // Setting the control register bit 1 to true to activate the MMA8452
 int Accelerometer_MMA8452::standby()
 {
--- a/MMA8452.h	Wed Oct 16 16:26:26 2013 +0000
+++ b/MMA8452.h	Wed Oct 16 18:55:16 2013 +0000
@@ -187,6 +187,16 @@
       int standby();
 
  
+       /** get_CTRL_Reg1 the MMA8452 (not required)
+        *   returns 0 for success in activating the chip
+        *   returns 1 for failure in activating the chip
+        *   -currrently no retries or waiting is done, this method tries 1 time the exits.
+        *
+        *   This will return the state of the control register 1. This holds and sets values for auto wake, sleep mode
+        *   output data rate, fast read mode and active/standby. More info on 6.7 of pdf for MMA8452 Freescale doc.
+      */
+      int get_CTRL_Reg1(int& CTRL_Reg); 
+      
       
        /** Initialization of device MMA8452 (required)
         */