Midterm
Dependencies: MMA8451Q8b SLCD mbed
Fork of KL46z_double_tap_2017 by
Diff: KL46z_single_tap_2016..cpp
- 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, ®Data, 1); sprintf (lcdData,"%x",regData); LCDMess(lcdData,BLINKTIME);