Pulse Detection in z-axis

Dependencies:   MMA8451Q8b SLCD mbed

Revision:
5:1fe35a74799a
Parent:
4:ba9ca0a0f87e
Child:
6:825780dcf426
--- a/main.cpp	Mon Feb 09 20:05:43 2015 +0000
+++ b/main.cpp	Mon Feb 16 18:18:34 2015 +0000
@@ -15,12 +15,18 @@
 #define REG_OUT_X_MSB     0x01
 #define REG_OUT_Y_MSB     0x03
 #define REG_OUT_Z_MSB     0x05
+#define REG_PULSE_CFG     0x21
 #define REG_PULSE_SRC     0x22
-#define REG_PULSE_CFG     0x21
+#define REG_PULSE_THSZ    0x25
+#define REG_CTRL_4        0x2D
+#define REG_CTRL_5        0x2E
 
 #define MAX_2G            0x00
 #define MAX_4G            0x01
 #define MAX_8G            0x02
+#define SET_INTERRUPT     0x08
+#define SET_INT_LINE      0x08
+
 
 //#define PRINTDBUG
 // Accelerometer SPI pins
@@ -37,7 +43,8 @@
 #define MMA8451_I2C_ADDRESS (0x1d<<1)
  
 Ticker ledBlink; // timinginterrupt for RED led
-InterruptIn mybutton(PTC3);  //push botton with internal pullup
+//InterruptIn mybutton(PTC3);  //push botton with internal pullup
+InterruptIn MMA8451QInt1(PTC5);  //push botton with internal pullup
 DigitalOut myled(LED_RED); // red led
 DigitalOut relay(LED_GREEN); // green led
 
@@ -67,29 +74,33 @@
     outState = !outState; 
     myled.write(outState);
 }
-        
-    
-void pressed() // button intterupt
-{
-    relayState = !relayState;
+
+void GreenLEDBlinker(){  // Green LED interrupt
+    relayState = !relayState; 
     relay.write(relayState);
 }
+        
 
 int main()
 {
     uint8_t regData = MAX_4G; 
     uint8_t latchData = 0x40; //0b01000000; //for pulse config register
     uint8_t axisData = 0x10; //0b00010000;
+    uint8_t interrupt1Data = 0x08; //0b00001000;
+    uint8_t interrupt2Data = 0x04; //0b00000100;
     char lcdData[LCDLEN];
     
     myled.write(outState);
     relay.write(relayState);
     
 // set up interrrupts to be used later for taps
-    mybutton.fall(&pressed);
+    MMA8451QInt1.rise(&GreenLEDBlinker);
+    MMA8451QInt1.mode(PullNone);
+   
 // set up interrrupts to be used later for taps
+//    mybutton.fall(&pressed);
     ledBlink.attach(&LEDBlinker, LEDDELAY);
-    
+        
 // Check to see if accerlometer is alive and well
     acc.setGLimit(MAX_2G); // For now set to 2g
     acc.readRegs(XYZ_DATA_CFG, &regData, 1);
@@ -99,6 +110,13 @@
     sprintf (lcdData,"%x",regData);
     LCDMess(lcdData,BLINKTIME); 
     
+    
+// Set up (pulse) interrupt to INT1 pin
+        regData = interrupt1Data;
+        acc.setRegisterInStandby(REG_CTRL_4, regData); // write the data
+        regData = interrupt2Data;
+        acc.setRegisterInStandby(REG_CTRL_5, regData); // write the data
+    
     while (true) { 
 
     // Read Pulse Source Data and check to see if things have been set
@@ -111,12 +129,12 @@
         acc.readRegs(REG_PULSE_CFG, &regData, 1);  // check it
         sprintf (lcdData,"%x",regData);
         LCDMess(lcdData,BLINKTIME); 
-        
+                
         acc.readRegs(REG_PULSE_SRC, &regData, 1);
         sprintf (lcdData,"%x",regData);
-        LCDMess(lcdData,BLINKTIME); 
+        LCDMess(lcdData,BLINKTIME);        
         
         LCDMessNoDwell(LCDMessages[relayState]);  
         wait(delay);
     }
-}
+}
\ No newline at end of file