Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of MMA845x by
Revision 13:77a8994b3bb2, committed 2018-07-03
- Comitter:
- amateusz
- Date:
- Tue Jul 03 00:11:57 2018 +0000
- Parent:
- 12:92294b5ca1c1
- Child:
- 14:683234dfe179
- Commit message:
- generic interface for enabling/disabling interrupts
Changed in this revision
| MMA845x.cpp | Show annotated file Show diff for this revision Revisions of this file |
| MMA845x.h | Show annotated file Show diff for this revision Revisions of this file |
--- 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;
--- a/MMA845x.h Mon Jul 02 23:55:31 2018 +0000
+++ b/MMA845x.h Tue Jul 03 00:11:57 2018 +0000
@@ -369,7 +369,18 @@
*/
uint8_t getStatus(void) const;
+ /** Write to a register (exposed for debugging reasons)
+ * Note: most writes are only valid in stop mode
+ * @param reg - The register to be written
+ * @param data - The data to be written
+ */
+ uint8_t writeRegister(uint8_t const reg, uint8_t const data) const;
+ /** Read from a register (exposed for debugging reasons)
+ * @param reg - The register to read from
+ * @return The register contents
+ */
+ uint8_t readRegister(uint8_t const reg, uint8_t count, char* data) const;
private:
I2C *_i2c;
@@ -382,19 +393,12 @@
uint8_t init(void);
- /** Write to a register (exposed for debugging reasons)
- * Note: most writes are only valid in stop mode
- * @param reg - The register to be written
- * @param data - The data to be written
+ /** Enable disable interrupt triggering for a given function.
+ * @function - a internal funcion capable to trigger an interrupt
+ * @pin - which phy pin assign to interrupt condition. If no pin is specified, interrupt is disabled
+ * @return
*/
- uint8_t writeRegister(uint8_t const reg, uint8_t const data) const;
-
- /** Read from a register (exposed for debugging reasons)
- * @param reg - The register to read from
- * @return The register contents
- */
- uint8_t readRegister(uint8_t const reg, uint8_t count, char* data) const;
-
+ uint8_t configInterrupt(INTERRUPT_CFG_EN_SOURCE function, INTERRUPT_PIN pin) const;
};
