enhancing Multitech's library for some accelerometer
Fork of MMA845x by
Diff: MMA845x.cpp
- Revision:
- 13:77a8994b3bb2
- Parent:
- 12:92294b5ca1c1
- Child:
- 14:683234dfe179
--- a/MMA845x.cpp Mon Jul 02 23:55:31 2018 +0000 +++ b/MMA845x.cpp Tue Jul 03 00:11:57 2018 +0000 @@ -150,28 +150,11 @@ // result = 1; // } // ↑ not true. MMA8451 is the only one supporting variable trip-angle values - char datain[1]; - uint8_t dataout; MMA845x::writeRegister(PL_COUNT, debounce_steps); MMA845x::writeRegister(PL_CFG, 0b11000000); // enable and set debounce counter to clear out of {clear, decrement} - if (pin != INT_NONE) { - // enable interrupt - result |= MMA845x::readRegister(CTRL_REG4, 1, datain); - dataout = (datain[0] | INT_LNDPRT); - result |= MMA845x::writeRegister(CTRL_REG4, dataout); - - //set pin for the interrupt - result |= MMA845x::readRegister(CTRL_REG5, 1, datain); - if (pin == 0) dataout = (datain[0] & ~INT_LNDPRT); // clearing bit - else dataout = (datain[0] | INT_LNDPRT); // setting bit - } else { - // disable interrupt - result |= MMA845x::readRegister(CTRL_REG4, 1, datain); - dataout = (datain[0] & ~INT_LNDPRT); - result |= MMA845x::writeRegister(CTRL_REG4, dataout); - } + configInterrupt(INT_LNDPRT, pin); return result; } @@ -200,6 +183,31 @@ return result; } +uint8_t MMA845x::configInterrupt(INTERRUPT_CFG_EN_SOURCE function, INTERRUPT_PIN pin) const +{ + uint8_t result = 0; + char datain[1]; + uint8_t dataout; + + if (pin != INT_NONE) { + // enable interrupt + result |= MMA845x::readRegister(CTRL_REG4, 1, datain); + dataout = (datain[0] | function); + result |= MMA845x::writeRegister(CTRL_REG4, dataout); + + //set pin for the interrupt + result |= MMA845x::readRegister(CTRL_REG5, 1, datain); + if (pin == 0) dataout = (datain[0] & ~function); // clearing bit + else dataout = (datain[0] | function); // setting bit + } else { + // disable interrupt + result |= MMA845x::readRegister(CTRL_REG4, 1, datain); + dataout = (datain[0] & ~function); + result |= MMA845x::writeRegister(CTRL_REG4, dataout); + } + return result; +} + uint8_t MMA845x::activeMode(void) const { uint8_t result = 0;