DE_4_1 Project 1b 150203

Fork of MMA8451Q8b by Stanley Cohen

Revision:
9:a9cba88ad7f6
Parent:
8:993bb9e96a4b
--- a/MMA8451Q8.cpp	Tue Feb 03 17:59:00 2015 +0000
+++ b/MMA8451Q8.cpp	Wed Feb 04 06:50:25 2015 +0000
@@ -30,6 +30,17 @@
 #define REG_PULSE_SRC     0x22
 #define REG_PULSE_CFG     0x21
 
+// pulse threshold for x, y , & z Registers
+#define PULSE_THSX        0x23
+#define PULSE_THSY        0x24
+#define PULSE_THSZ        0x25
+
+// Pulse Time limit first pulse  
+#define PULSE_TMLT        0x26
+
+// Latency time for 2nd pulse
+#define PULSE_LTCY        0x27
+
 #define UINT14_MAX        16383
 
 #define MAX_2G            0x00
@@ -71,17 +82,63 @@
 // Also add function prototype to .h file
 void MMA8451Q::setPulseConfiguration(uint8_t latch,uint8_t axisSet) {
     uint8_t configBits;   
-    uint8_t data[NUM_DATA] = {REG_CTRL_REG_1, 0x00}; // put in standby mode
+    uint8_t data[NUM_DATA] = {REG_CTRL_REG_1, 0x00}; // put in standby mode /// Q: is 0x00 saying switch off?
+// set up configuration bits.
+    configBits = latch | axisSet;                                           /// Q: what does the "|" do? 
+    writeRegs(data, NUM_DATA); // put in standby                            /// Q: is it sending data[NUM_DATA] or two seperate vars?
+        data[ADDRESS_INDEX ] = REG_PULSE_CFG;                                   /// is this a function after it is put into standby?
+        data[DATA_INDEX] = configBits;                                              
+    writeRegs(data, NUM_DATA);                                              /// Q: what is it doing here? standby again?
+        data[ADDRESS_INDEX ] = REG_CTRL_REG_1; // put back in active mode   // how is this back in active mode?
+        data[DATA_INDEX] = 0x01;                                    
+    writeRegs(data, 2); // make active                                      //Q: what is the 2 here?
+}
+
+
+
+// added to .h file
+ void setPulseThreshold (uint8_t axisSelect, uint8_t threshold) {
+    uint8_t configBits;
+    uint8_t data[NUM_DATA] = {REG_CTRL_REG_1, 0x00}; // put in standby mode 
 // set up configuration bits.
-    configBits = latch | axisSet;
-    writeRegs(data, NUM_DATA); // put in standby
-    data[ADDRESS_INDEX ] = REG_PULSE_CFG;
-    data[DATA_INDEX] = configBits;
-    writeRegs(data, NUM_DATA);
-    data[ADDRESS_INDEX ] = REG_CTRL_REG_1; // put back in active mode
-    data[DATA_INDEX] = 0x01;
-    writeRegs(data, 2); // make active
+    configBits = axisSelect | threshold;                                           
+    writeRegs(data, NUM_DATA); // put in standby                            
+        data[ADDRESS_INDEX ] = PULSE_THSZ;  // Set it to Z axis Threshold                                 
+        data[DATA_INDEX] = configBits;                                              
+    writeRegs(data, NUM_DATA);                                             
+        data[ADDRESS_INDEX ] = REG_CTRL_REG_1; // put back in active mode   
+        data[DATA_INDEX] = 0x01;                                    
+    writeRegs(data, 2); // make active  
 }
+
+void setPulseTimeLimit (uint8_t timeLimit){
+    uint8_t configBits;
+    uint8_t data[NUM_DATA] = {REG_CTRL_REG_1, 0x00}; // put in standby mode 
+// set up configuration bits.
+    configBits = timeLimit;                                           
+    writeRegs(data, NUM_DATA); // put in standby                            
+        data[ADDRESS_INDEX ] = PULSE_TMLT;  // Set it to Pulse Time limit Register                                
+        data[DATA_INDEX] = configBits;                                              
+    writeRegs(data, NUM_DATA);                                             
+        data[ADDRESS_INDEX ] = REG_CTRL_REG_1; // put back in active mode   
+        data[DATA_INDEX] = 0x01;                                    
+    writeRegs(data, 2); // make active  
+}
+
+ void setPulseLatency (uint8_t latencyTime){
+    uint8_t configBits;
+    uint8_t data[NUM_DATA] = {REG_CTRL_REG_1, 0x00}; // put in standby mode 
+// set up configuration bits.
+    configBits = latencyTime;                                           
+    writeRegs(data, NUM_DATA); // put in standby                            
+        data[ADDRESS_INDEX ] = PULSE_LTCY;  // Set it to Pulse Latency Register                                
+        data[DATA_INDEX] = configBits;                                              
+    writeRegs(data, NUM_DATA);                                             
+        data[ADDRESS_INDEX ] = REG_CTRL_REG_1; // put back in active mode   
+        data[DATA_INDEX] = 0x01;                                    
+    writeRegs(data, 2); // make active  
+}
+
 float MMA8451Q::getAccX() {
     return (float(getAccAxis(REG_OUT_X_MSB))/gScaling[gChosen]);
 }