For experimentation NMHU Ambient computing
Dependents: KL46z_single_tap_empty_DE_4_1_PROJECT1B_wInterrupts KL46z_single_tap_empty_DE_4_1_PROJECT1D KL46z_single_tap_generic RAHUL_KL46z_single_tap_generic_copy ... more
Fork of MMA8451Q8a by
Revision 12:12b18fdb72f7, committed 2016-02-22
- Comitter:
- scohennm
- Date:
- Mon Feb 22 16:54:40 2016 +0000
- Parent:
- 9:3229b6691c89
- Commit message:
- updated active/standby mode change
Changed in this revision
MMA8451Q8g.cpp | Show annotated file Show diff for this revision Revisions of this file |
MMA8451Q8g.h | Show annotated file Show diff for this revision Revisions of this file |
diff -r 3229b6691c89 -r 12b18fdb72f7 MMA8451Q8g.cpp --- a/MMA8451Q8g.cpp Mon Feb 09 20:05:35 2015 +0000 +++ b/MMA8451Q8g.cpp Mon Feb 22 16:54:40 2016 +0000 @@ -56,31 +56,45 @@ readRegs(REG_WHO_AM_I, &who_am_i, 1); return who_am_i; } +void MMA8451Q::setStandbyMode(){ +#define ACTIVEMASK 0x01 + uint8_t registerData[1]; + uint8_t data[NUM_DATA] = {REG_CTRL_REG_1, 0x00}; + + readRegs(REG_CTRL_REG_1, registerData, 1); + data[1] = registerData[0] & ~ACTIVEMASK; + writeRegs(data, NUM_DATA); // put in standby +} +void MMA8451Q::setActiveMode(){ +#define ACTIVEMASK 0x01 + uint8_t registerData[1]; + uint8_t data[NUM_DATA] = {REG_CTRL_REG_1, 0x00}; + + readRegs(REG_CTRL_REG_1, registerData, 1); + data[1] = registerData[0] | ACTIVEMASK; + writeRegs(data, NUM_DATA); // put in standby +} + void MMA8451Q::setGLimit(int gSelect) { uint8_t data[NUM_DATA] = {REG_CTRL_REG_1, 0x00}; gChosen = gSelect; - writeRegs(data, NUM_DATA); // put in standby + setStandbyMode(); data[ADDRESS_INDEX ] = XYZ_DATA_CFG; data[DATA_INDEX] = gChosen; writeRegs(data, 2);// change g limit - data[ADDRESS_INDEX ] = REG_CTRL_REG_1; - data[DATA_INDEX] = 0x01; - writeRegs(data, 2); // make active + setActiveMode(); // make active } // add Pusle configuration register access // 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_PULSE_CFG, 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; + setStandbyMode(); // put in standby 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 + setActiveMode(); // make active } // Make a genric register updater for those commands that need to put the @@ -90,13 +104,11 @@ uint8_t data[NUM_DATA] = {REG_CTRL_REG_1, 0x00}; // put in standby mode // set up configuration bits. configBits = regData; - writeRegs(data, NUM_DATA); // put in standby + setStandbyMode(); // put in standby data[ADDRESS_INDEX ] = regAddress; 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 + setActiveMode(); // put back in active mode } float MMA8451Q::getAccX() {
diff -r 3229b6691c89 -r 12b18fdb72f7 MMA8451Q8g.h --- a/MMA8451Q8g.h Mon Feb 09 20:05:35 2015 +0000 +++ b/MMA8451Q8g.h Mon Feb 22 16:54:40 2016 +0000 @@ -120,7 +120,8 @@ put in standby to update **/ void setRegisterInStandby(uint8_t regAddress,uint8_t regData); - + void setStandbyMode(); + void setActiveMode(); void readRegs(int addr, uint8_t * data, int len); void writeRegs(uint8_t * data, int len);