void h3lis331dl_init { response = LIS331DLH_SetODR(LIS331DLH_ODR_100Hz); // LIS331DLH_ODR_1000Hz response = LIS331DLH_SetMode(LIS331DLH_NORMAL); response = LIS331DLH_SetFullScale(LIS331DLH_FULLSCALE_100g); response = LIS331DLH_SetAxis(LIS331DLH_X_ENABLE | LIS331DLH_Y_ENABLE | LIS331DLH_Z_ENABLE); response = LIS331DLH_SetBDU(MEMS_ENABLE); // Enable Block Data Update Functionality response = LIS331DLH_SetIntHighLow(MEMS_DISABLE); // Interrupt active high; response = LIS331DLH_SetInt1DataSign(LIS331DLH_DATA_READY);// response = LIS331DLH_SetInt1Configuration(0x3F); // All On } void lis_int_cb(void) { status_t status = LIS331DLH_ResetInt1Latch(); hal.new_lis = 1; } main() { init_ints(); // Callback lis_int_cb() h3lis331dl_init(); hal.new_lis = 1; while (true) { if (hal.new_lis) { hal.new_lis = 0; status = LIS331DLH_GetAccAxesRaw(&axesraw); LIS331DLH_GetStatusReg(&val); } else { msp430_delay_ms(1l); LIS331DLH_GetStatusReg(&val); if (val & LIS331DLH_STATUS_REG_ZYXOR) { status_t status = LIS331DLH_ResetInt1Latch(); hal.new_lis = 1; } } } }