DE_4_1 Project 1b 150203

Fork of MMA8451Q8b by Stanley Cohen

Files at this revision

API Documentation at this revision

Comitter:
destradafilm
Date:
Wed Feb 04 06:50:25 2015 +0000
Parent:
8:993bb9e96a4b
Commit message:
Single Tap _ DE_4_1_project 1b; Date: 02/03/15

Changed in this revision

MMA8451Q8.cpp Show annotated file Show diff for this revision Revisions of this file
MMA8451Q8.h Show annotated file Show diff for this revision Revisions of this file
diff -r 993bb9e96a4b -r a9cba88ad7f6 MMA8451Q8.cpp
--- 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]);
 }
diff -r 993bb9e96a4b -r a9cba88ad7f6 MMA8451Q8.h
--- a/MMA8451Q8.h	Tue Feb 03 17:59:00 2015 +0000
+++ b/MMA8451Q8.h	Wed Feb 04 06:50:25 2015 +0000
@@ -112,6 +112,12 @@
   void setGLimit(int gSelect); 
   // added in .cpp file for tap configuration
   void setPulseConfiguration(uint8_t latch,uint8_t axisSet);
+  
+  /// Adding to setup other registers _ DE _ 150203
+  void setPulseThreshold (uint8_t axisSelect, uint8_t threshold);
+  void setPulseTimeLimit (uint8_t timeLimit);
+  void setPulseLatency (uint8_t latencyTime);
+  
   void readRegs(int addr, uint8_t * data, int len);
   void writeRegs(uint8_t * data, int len);