Stanley Cohen / MMA8451Q8b

Dependents:   KL46z_single_tap_empty_DE_4_1_PROJECT1B_wInterrupts KL46z_single_tap_empty_DE_4_1_PROJECT1D KL46z_single_tap_generic RAHUL_KL46z_single_tap_generic_copy ... more

Fork of MMA8451Q8a by Stanley Cohen

Revision:
11:965d9a564f71
Parent:
10:c875155f829d
diff -r c875155f829d -r 965d9a564f71 MMA8451Q8.cpp
--- a/MMA8451Q8.cpp	Wed Feb 10 15:30:23 2016 +0000
+++ b/MMA8451Q8.cpp	Mon Feb 15 19:14:41 2016 +0000
@@ -56,17 +56,35 @@
     readRegs(REG_WHO_AM_I, &who_am_i, 1);
     return who_am_i;
 }
+void MMA8451Q::setStandbyMode(){
+#define ACTIVEMASK 0x01
+    uint8_t registerData[1];
+    uint8_t data[NUM_DATA] = {REG_CTRL_REG_1, 0x00};
+    
+    readRegs(REG_CTRL_REG_1, registerData, 1);
+    data[1] = registerData[0] & ~ACTIVEMASK;
+    writeRegs(data, NUM_DATA); // put in standby
+}
+void MMA8451Q::setActiveMode(){
+#define ACTIVEMASK 0x01
+    uint8_t registerData[1];
+    uint8_t data[NUM_DATA] = {REG_CTRL_REG_1, 0x00};
+    
+    readRegs(REG_CTRL_REG_1, registerData, 1);
+    data[1] = registerData[0] | ACTIVEMASK;
+    writeRegs(data, NUM_DATA); // put in standby
+}
+
 void MMA8451Q::setGLimit(int gSelect) {   
     uint8_t data[NUM_DATA] = {REG_CTRL_REG_1, 0x00};
     gChosen = gSelect;
-    writeRegs(data, NUM_DATA); // put in standby
+    setStandbyMode();
     data[ADDRESS_INDEX ] = XYZ_DATA_CFG;
     data[DATA_INDEX] = gChosen;
     writeRegs(data, 2);// change g limit
-    data[ADDRESS_INDEX ] = REG_CTRL_REG_1;
-    data[DATA_INDEX] = 0x01;
-    writeRegs(data, 2); // make active
+    setActiveMode(); // make active
 }
+
 // add Pusle configuration register access
 // Also add function prototype to .h file
 void MMA8451Q::setPulseConfiguration(uint8_t latch,uint8_t axisSet) {