Example of pedometer for LSM6DSL in X-NUCLEO-IKS01A2
Dependencies: X_NUCLEO_IKS01A2 mbed
Fork of Pedometer_IKS01A2 by
Pedometer Demo Application based on sensor expansion board X-NUCLEO-IKS01A2
Main function is to show how to count steps using the sensor expansion board and send a notification using UART to a connected PC or Desktop and display it on terminal applications like TeraTerm.
After connection has been established:
- the user can try to shake the board to simulate the steps and then view the notification using an hyper terminal. When a new step is detected, the LED is switched on for a while.
- the user button can be used to reset the step counter.
Revision 5:cce849c2e6e7, committed 2016-11-23
- Comitter:
- cparata
- Date:
- Wed Nov 23 15:54:12 2016 +0000
- Parent:
- 4:b9467a8f2bcc
- Child:
- 6:153ff83ae370
- Commit message:
- Improve Multi Event Management
Changed in this revision
--- a/X_NUCLEO_IKS01A2/Components/LSM6DSLSensor/LSM6DSLSensor.cpp Mon Nov 21 14:57:45 2016 +0000
+++ b/X_NUCLEO_IKS01A2/Components/LSM6DSLSensor/LSM6DSLSensor.cpp Wed Nov 23 15:54:12 2016 +0000
@@ -1202,8 +1202,8 @@
return 1;
}
- /* INT1_WU setting */
- if ( LSM6DSL_ACC_GYRO_W_WUEvOnInt1( (void *)this, LSM6DSL_ACC_GYRO_INT1_WU_ENABLED ) == MEMS_ERROR )
+ /* INT2_WU setting */
+ if ( LSM6DSL_ACC_GYRO_W_WUEvOnInt2( (void *)this, LSM6DSL_ACC_GYRO_INT2_WU_ENABLED ) == MEMS_ERROR )
{
return 1;
}
@@ -1217,8 +1217,8 @@
*/
int LSM6DSLSensor::Disable_Wake_Up_Detection(void)
{
- /* INT1_WU setting */
- if ( LSM6DSL_ACC_GYRO_W_WUEvOnInt1( (void *)this, LSM6DSL_ACC_GYRO_INT1_WU_DISABLED ) == MEMS_ERROR )
+ /* INT2_WU setting */
+ if ( LSM6DSL_ACC_GYRO_W_WUEvOnInt2( (void *)this, LSM6DSL_ACC_GYRO_INT2_WU_DISABLED ) == MEMS_ERROR )
{
return 1;
}
@@ -1853,7 +1853,7 @@
*/
int LSM6DSLSensor::Get_Event_Status(LSM6DSL_Event_Status_t *status)
{
- uint8_t Wake_Up_Src = 0, Tap_Src = 0, D6D_Src = 0, Func_Src = 0;
+ uint8_t Wake_Up_Src = 0, Tap_Src = 0, D6D_Src = 0, Func_Src = 0, Md1_Cfg = 0, Md2_Cfg = 0, Int1_Ctrl = 0;
memset((void *)status, 0x0, sizeof(LSM6DSL_Event_Status_t));
@@ -1877,39 +1877,75 @@
return 1;
}
- if((Wake_Up_Src & LSM6DSL_ACC_GYRO_FF_EV_STATUS_MASK))
+ if(ReadReg(LSM6DSL_ACC_GYRO_MD1_CFG, &Md1_Cfg ) != 0 )
+ {
+ return 1;
+ }
+
+ if(ReadReg(LSM6DSL_ACC_GYRO_MD2_CFG, &Md2_Cfg ) != 0)
{
- status->FreeFallStatus = 1;
+ return 1;
+ }
+
+ if(ReadReg(LSM6DSL_ACC_GYRO_INT1_CTRL, &Int1_Ctrl ) != 0)
+ {
+ return 1;
}
- if((Wake_Up_Src & LSM6DSL_ACC_GYRO_WU_EV_STATUS_MASK))
+ if(Md1_Cfg & LSM6DSL_ACC_GYRO_INT1_FF_MASK)
{
- status->WakeUpStatus = 1;
+ if((Wake_Up_Src & LSM6DSL_ACC_GYRO_FF_EV_STATUS_MASK))
+ {
+ status->FreeFallStatus = 1;
+ }
}
- if((Tap_Src & LSM6DSL_ACC_GYRO_SINGLE_TAP_EV_STATUS_MASK))
+ if(Md2_Cfg & LSM6DSL_ACC_GYRO_INT2_WU_MASK)
{
- status->TapStatus = 1;
+ if((Wake_Up_Src & LSM6DSL_ACC_GYRO_WU_EV_STATUS_MASK))
+ {
+ status->WakeUpStatus = 1;
+ }
}
- if((Tap_Src & LSM6DSL_ACC_GYRO_DOUBLE_TAP_EV_STATUS_MASK))
+ if(Md1_Cfg & LSM6DSL_ACC_GYRO_INT1_SINGLE_TAP_MASK)
{
- status->DoubleTapStatus = 1;
+ if((Tap_Src & LSM6DSL_ACC_GYRO_SINGLE_TAP_EV_STATUS_MASK))
+ {
+ status->TapStatus = 1;
+ }
+ }
+
+ if(Md1_Cfg & LSM6DSL_ACC_GYRO_INT1_TAP_MASK)
+ {
+ if((Tap_Src & LSM6DSL_ACC_GYRO_DOUBLE_TAP_EV_STATUS_MASK))
+ {
+ status->DoubleTapStatus = 1;
+ }
}
- if((D6D_Src & LSM6DSL_ACC_GYRO_D6D_EV_STATUS_MASK))
+ if(Md1_Cfg & LSM6DSL_ACC_GYRO_INT1_6D_MASK)
{
- status->D6DOrientationStatus = 1;
+ if((D6D_Src & LSM6DSL_ACC_GYRO_D6D_EV_STATUS_MASK))
+ {
+ status->D6DOrientationStatus = 1;
+ }
}
- if((Func_Src & LSM6DSL_ACC_GYRO_PEDO_EV_STATUS_MASK))
+ if(Int1_Ctrl & LSM6DSL_ACC_GYRO_INT1_PEDO_MASK)
{
- status->StepStatus = 1;
+ if((Func_Src & LSM6DSL_ACC_GYRO_PEDO_EV_STATUS_MASK))
+ {
+ status->StepStatus = 1;
+ }
}
- if((Func_Src & LSM6DSL_ACC_GYRO_TILT_EV_STATUS_MASK))
+ if(Md1_Cfg & LSM6DSL_ACC_GYRO_INT1_TILT_MASK)
{
- status->TiltStatus = 1;
+ if((Func_Src & LSM6DSL_ACC_GYRO_TILT_EV_STATUS_MASK))
+ {
+ status->TiltStatus = 1;
+ }
}
return 0;
--- a/X_NUCLEO_IKS01A2/x_nucleo_iks01a2_targets.h Mon Nov 21 14:57:45 2016 +0000 +++ b/X_NUCLEO_IKS01A2/x_nucleo_iks01a2_targets.h Wed Nov 23 15:54:12 2016 +0000 @@ -48,5 +48,7 @@ /* LSM6DSL INT1 */ #define IKS01A2_PIN_LSM6DSL_INT1 (D4) +/* LSM6DSL INT2 */ +#define IKS01A2_PIN_LSM6DSL_INT2 (D5) #endif // _X_NUCLEO_IKS01A2_TARGETS_H_
