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 X_NUCLEO_IKS01A1 by
Revision 52:54553fd15b50, committed 2015-06-10
- Comitter:
- Wolfgang Betz
- Date:
- Wed Jun 10 16:44:54 2015 +0200
- Parent:
- 50:f507d4465c31
- Child:
- 53:b5b1a3f7388c
- Child:
- 54:2a676c734b30
- Commit message:
- Enable free fall detection
Changed in this revision
--- a/Components/lsm6ds3/lsm6ds3_class.h Mon Jun 08 18:04:19 2015 +0200
+++ b/Components/lsm6ds3/lsm6ds3_class.h Wed Jun 10 16:44:54 2015 +0200
@@ -53,7 +53,8 @@
/** Constructor
* @param i2c device I2C to be used for communication
*/
- LSM6DS3(DevI2C &i2c) : GyroSensor(), MotionSensor(), dev_i2c(i2c) {
+ LSM6DS3(DevI2C &i2c, PinName irq_pin) : GyroSensor(), MotionSensor(),
+ dev_i2c(i2c), free_fall(irq_pin) {
}
/** Destructor
@@ -137,6 +138,27 @@
IMU_6AXES_StatusTypeDef Get_Status_Free_Fall_Detection(uint8_t *status) {
return LSM6DS3_Get_Status_Free_Fall_Detection(status);
}
+
+ /** Attach a function to call when a free fall is detected
+ *
+ * @param fptr A pointer to a void function, or 0 to set as none
+ */
+ void Attach_Free_Fall_Detection_IRQ(void (*fptr)(void)) {
+ free_fall.mode(PullNone); /* be precise about pin mode */
+ free_fall.rise(fptr);
+ }
+
+ /** Enable Free Fall IRQ
+ */
+ void Enable_Free_Fall_Detection_IRQ(void) {
+ free_fall.enable_irq();
+ }
+
+ /** Disable free Fall IRQ
+ */
+ void Disable_Free_Fall_Detection_IRQ(void) {
+ free_fall.disable_irq();
+ }
protected:
/*** Methods ***/
@@ -171,7 +193,7 @@
*/
void LSM6DS3_IO_ITConfig(void)
{
- /* To be implemented */
+ /* done in constructor */
}
/**
@@ -227,6 +249,9 @@
/*** Instance Variables ***/
/* IO Device */
DevI2C &dev_i2c;
+
+ /* Free Fall Detection IRQ */
+ InterruptIn free_fall;
};
#endif // __LSM6DS3_CLASS_H
--- a/x_nucleo_iks01a1.cpp Mon Jun 08 18:04:19 2015 +0200
+++ b/x_nucleo_iks01a1.cpp Wed Jun 10 16:44:54 2015 +0200
@@ -52,7 +52,7 @@
magnetometer(new LIS3MDL(*dev_i2c)),
pressure_sensor(new LPS25H(*dev_i2c)),
gyro_lsm6ds0(new LSM6DS0(*dev_i2c)),
- gyro_lsm6ds3(new LSM6DS3(*dev_i2c))
+ gyro_lsm6ds3(new LSM6DS3(*dev_i2c, IKS01A1_PIN_FF))
{
}
--- a/x_nucleo_iks01a1_targets.h Mon Jun 08 18:04:19 2015 +0200 +++ b/x_nucleo_iks01a1_targets.h Wed Jun 10 16:44:54 2015 +0200 @@ -46,4 +46,7 @@ #define IKS01A1_PIN_I2C_SCL (D15) #define IKS01A1_PIN_I2C_SDA (D14) +/* Free Fall Detection IRQ */ +#define IKS01A1_PIN_FF (A2) + #endif // _X_NUCLEO_IKS01A1_TARGETS_H_
