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
--- 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]);
 }
--- 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);