Midterm

Dependencies:   MMA8451Q8b SLCD mbed

Fork of KL46z_double_tap_2017 by Mark Turner

Revision:
14:ca20f659409a
Parent:
13:254e382efeab
--- a/KL46z_single_tap_2016..cpp	Wed Mar 15 07:04:12 2017 +0000
+++ b/KL46z_single_tap_2016..cpp	Wed Mar 15 09:41:20 2017 +0000
@@ -1,17 +1,17 @@
 #include "mbed.h"
 #include "MMA8451Q8g.h"
 #include "SLCD.h"
-
+ 
 #define BLINKTIME   1.5
 #define RELAYON     0
 #define RELAYOFF    1
 #define LEDDELAY    0.4
 #define WAITDELAY   0.7
 #define LCDLEN      10
-
+ 
 #define REG_WHO_AM_I      0x0D
 #define XYZ_DATA_CFG      0x0E
-
+ 
 #define REG_OUT_X_MSB     0x01
 #define REG_OUT_Y_MSB     0x03
 #define REG_OUT_Z_MSB     0x05
@@ -21,25 +21,29 @@
 #define REH_PULSE_TMLT    0x26
 #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     0x00 //using interrupt INT1 PTC5
+
+
+#define SET_INTERRUPT     0x08 //using interrupt INT1 PTC5
 #define SET_INT_LINE      0x00
+
+
 #define SET_THZ           0x28 //  See Table 49 in data sheet
 /***********
 0b0010 0000
 2g/0.063g/count = 32 counts
 ************/
-#define SET_TMLT          0x38 // See Talbe 51 in data sheet
+#define SET_TMLT          0x1C // See Talbe 51 in data sheet
 /******
 0b0001 1000
 24 = 0x18
 time step at 800Hz ODR = 0.625ms
 24x0.625 = 15 ms
 ******/
-
+ 
 //#define PRINTDBUG
 // Accelerometer SPI pins
 #if   defined (TARGET_KL25Z) || defined (TARGET_KL46Z)
@@ -51,14 +55,14 @@
 #else
   #error TARGET NOT DEFINED
 #endif
-
+ 
 #define MMA8451_I2C_ADDRESS (0x1d<<1)
  
 Ticker ledBlink; // timinginterrupt for RED led
 InterruptIn MMA8451QInt1(PTD1);  //push botton with internal pullup
 DigitalOut myled(LED_RED); // red led
 DigitalOut relay(LED_GREEN); // green led
-
+ 
  MMA8451Q acc(SDA, SCL, MMA8451_I2C_ADDRESS);
  
 float delay = WAITDELAY;
@@ -66,8 +70,8 @@
 int outState = false;
 SLCD slcd; //define LCD display
 char LCDMessages[2][LCDLEN] = {"TRUE", "FALS"};
-
-
+ 
+ 
 void LCDMess(char *lMess, float dWait){
         slcd.Home();
         slcd.clear();
@@ -79,30 +83,30 @@
         slcd.clear();
         slcd.printf(lMess);
 } 
-
+ 
 // Interrupt routines
 void LEDBlinker(){  // RED LED interrupt
     outState = !outState; 
     myled.write(outState);
 }
-
+ 
 void GreenLEDBlinker(){  // Green LED interrupt
     //uint8_t i_regData; 
     relayState = !relayState; 
     relay.write(relayState);
     //acc.readRegs(REG_PULSE_SRC, &i_regData, 1); // Clear the tap event
 }        
-
+ 
 // end interrupt routines
-
-
+ 
+ 
 int main()
 {
     
     uint8_t regData; 
-    uint8_t latchData = 0x40; //0b01000000; //for pulse config register
-    uint8_t axisData = 0x10; //0b00010000;
-
+    uint8_t latchData = 0x20; //0b01000000 64; //for pulse config register
+    uint8_t axisData = 0x08; //0b00010000  16;
+ 
     char lcdData[LCDLEN];
     
     myled.write(outState);
@@ -141,7 +145,7 @@
     acc.setRegisterInStandby(REG_CTRL_4, SET_INTERRUPT); // write the data
     acc.setRegisterInStandby(REG_CTRL_5, SET_INT_LINE); // write the data
 // End or seetup    
-
+ 
     acc.readRegs(REG_WHO_AM_I, &regData, 1);
     sprintf (lcdData,"%x",regData);
     LCDMess(lcdData,BLINKTIME);