WakeUp_LSM6DSO
Dependencies: X_NUCLEO_IKS01A3
Diff: main.cpp
- Revision:
- 4:387ef72462e0
- Parent:
- 0:4afec65463dd
- Child:
- 5:507ef51a90be
--- a/main.cpp Mon Jun 03 09:25:31 2019 +0000 +++ b/main.cpp Wed Jul 24 15:07:19 2019 +0000 @@ -4,7 +4,7 @@ * @author SRA * @version V1.0.0 * @date 5-March-2019 - * @brief Simple Example application for using the X_NUCLEO_IKS01A3 + * @brief Simple Example application for using the X_NUCLEO_IKS01A3 * MEMS Inertial & Environmental Sensor Nucleo expansion board. ****************************************************************************** * @attention @@ -34,75 +34,78 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * ****************************************************************************** -*/ - +*/ + /* Includes */ #include "mbed.h" #include "XNucleoIKS01A3.h" - + /* Instantiate the expansion board */ static XNucleoIKS01A3 *mems_expansion_board = XNucleoIKS01A3::instance(D14, D15, D4, D5, A3, D6, A4); - + /* Retrieve the composing elements of the expansion board */ static LSM6DSOSensor *acc_gyro = mems_expansion_board->acc_gyro; - + InterruptIn mybutton(USER_BUTTON); DigitalOut myled(LED1); - + volatile int mems_event = 0; volatile int toggle_wake_up_enable = 0; static int wake_up_is_enabled = 1; - + void pressed_cb(); void INT1_cb(); - + /* Simple main function */ -int main() { - /* Attach callback to User button press */ - mybutton.fall(&pressed_cb); - /* Attach callback to LSM6DSO INT1 */ - acc_gyro->attach_int1_irq(&INT1_cb); - - /* Enable LSM6DSO accelerometer */ - acc_gyro->enable_x(); - /* Enable Wake-Up Detection. */ - acc_gyro->enable_wake_up_detection(); - - printf("\r\n--- Starting new run ---\r\n"); - - while(1) { - if(toggle_wake_up_enable) { - toggle_wake_up_enable = 0; - if(wake_up_is_enabled == 0) { - acc_gyro->enable_wake_up_detection(); - wake_up_is_enabled = 1; - } else { - acc_gyro->disable_wake_up_detection(); - wake_up_is_enabled = 0; - } +int main() +{ + /* Attach callback to User button press */ + mybutton.fall(&pressed_cb); + /* Attach callback to LSM6DSO INT1 */ + acc_gyro->attach_int1_irq(&INT1_cb); + + /* Enable LSM6DSO accelerometer */ + acc_gyro->enable_x(); + /* Enable Wake-Up Detection. */ + acc_gyro->enable_wake_up_detection(); + + printf("\r\n--- Starting new run ---\r\n"); + + while (1) { + if (toggle_wake_up_enable) { + toggle_wake_up_enable = 0; + if (wake_up_is_enabled == 0) { + acc_gyro->enable_wake_up_detection(); + wake_up_is_enabled = 1; + } else { + acc_gyro->disable_wake_up_detection(); + wake_up_is_enabled = 0; + } + } + + if (mems_event) { + mems_event = 0; + LSM6DSO_Event_Status_t status; + acc_gyro->get_event_status(&status); + if (status.WakeUpStatus) { + /* Led blinking. */ + myled = 1; + wait(0.2); + myled = 0; + + /* Output data. */ + printf("Wake Up Detected!\r\n"); + } + } } - - if (mems_event) { - mems_event = 0; - LSM6DSO_Event_Status_t status; - acc_gyro->get_event_status(&status); - if (status.WakeUpStatus) { - /* Led blinking. */ - myled = 1; - wait(0.2); - myled = 0; - - /* Output data. */ - printf("Wake Up Detected!\r\n"); - } - } - } +} + +void pressed_cb() +{ + toggle_wake_up_enable = 1; } - -void pressed_cb() { - toggle_wake_up_enable = 1; + +void INT1_cb() +{ + mems_event = 1; } - -void INT1_cb() { - mems_event = 1; -}