Bosch Sensortec Community

    cancel
    Showing results for 
    Search instead for 
    Did you mean: 
    SOLVED

    INT2 cannot be used for any motion of BMI 270, but INT1 can be used.

    INT2 cannot be used for any motion of BMI 270, but INT1 can be used.

    hjj
    New Poster
     
     

    Hello everyone, I have a problem that has troubled me for a long time.I hope I can get your help.

    I use BMI 2_ INT1 can be mapped to the external interrupt INT1 of MCU, but BMI2 is used_ INT1 cannot be mapped to external interrupt INT2.

    My code is as follows


    int any_motion_interrupt(void)
    {
    /* Status of api are returned to this variable. */
    int8_t rslt;

    /* Accel sensor and any-motion feature are listed in array. */
    uint8_t sens_list[2] = { BMI2_ACCEL, BMI2_ANY_MOTION };
    struct bmi2_int_pin_config int_cfg;
    /* Variable to get any-motion interrupt status. */
    uint16_t int_status = 0;

    /* Sensor initialization configuration. */
    struct bmi2_dev bmi2_dev;

    /* Select features and their pins to be mapped to. */
    struct bmi2_sens_int_config sens_int = { .type = BMI2_ANY_MOTION, .hw_int_pin = BMI2_INT2 };

    /* Interface reference is given as a parameter
    * For I2C : BMI2_I2C_INTF
    * For SPI : BMI2_SPI_INTF
    */
    rslt = bmi2_interface_init(&bmi2_dev, BMI2_SPI_INTF);
    bmi2_error_codes_print_result(rslt);

    /* Initialize bmi270. */
    rslt = bmi270_init(&bmi2_dev);
    bmi2_error_codes_print_result(rslt);

    if (rslt == BMI2_OK)
    {
    /* Enable the selected sensors. */
    rslt = bmi270_sensor_enable(sens_list, 2, &bmi2_dev);
    bmi2_error_codes_print_result(rslt);

    bmi2_get_int_pin_config(&int_cfg, &bmi2_dev);

    int_cfg.pin_type = BMI2_INT2;
    int_cfg.pin_cfg[0].lvl = BMI2_INT_ACTIVE_HIGH;/*Config INT2 rising edge trigging*/
    int_cfg.pin_cfg[0].od = BMI2_INT_PUSH_PULL;
    int_cfg.pin_cfg[0].output_en= BMI2_INT_OUTPUT_ENABLE;

    bmi2_set_int_pin_config(&int_cfg, &bmi2_dev);
    bmi2_error_codes_print_result(rslt);

    if (rslt == BMI2_OK)
    {
    /* Set feature configurations for any-motion. */
    rslt = set_feature_config(&bmi2_dev);
    bmi2_error_codes_print_result(rslt);

    if (rslt == BMI2_OK)
    {
    /* Map the feature interrupt for any-motion. */
    rslt = bmi270_map_feat_int(&sens_int, 1, &bmi2_dev);
    bmi2_error_codes_print_result(rslt);
    printf("Move the board\n");

    /* Loop to get any-motion interrupt. */
    do
    {
    /* Clear buffer. */
    int_status = 0;

    /* To get the interrupt status of any-motion. */
    rslt = bmi2_get_int_status(&int_status, &bmi2_dev);
    bmi2_error_codes_print_result(rslt);

    /* To check the interrupt status of any-motion. */
    if (int_status & BMI270_ANY_MOT_STATUS_MASK)
    {
    printf("Any-motion interrupt is generated\n");
    break;
    }
    } while (rslt == BMI2_OK);
    }
    }
    }


    return rslt;
    }

     

    6 REPLIES 6

    BSTRobin
    Community Moderator
    Community Moderator

    Hi hjj,

    You should modify your code like this, then INT2 pin can be sent out interrupt signal.

    int_cfg.pin_type = BMI2_INT2;
    int_cfg.pin_cfg[1].lvl = BMI2_INT_ACTIVE_HIGH;/*Config INT2 rising edge trigging*/
    int_cfg.pin_cfg[1].od = BMI2_INT_PUSH_PULL;
    int_cfg.pin_cfg[1].output_en= BMI2_INT_OUTPUT_ENABLE;

    BSTRobin
    Community Moderator
    Community Moderator

    Hi hjj,

    Did it work well on your side?

    Icon--AD-black-48x48Icon--address-consumer-data-black-48x48Icon--appointment-black-48x48Icon--back-left-black-48x48Icon--calendar-black-48x48Icon--center-alignedIcon--Checkbox-checkIcon--clock-black-48x48Icon--close-black-48x48Icon--compare-black-48x48Icon--confirmation-black-48x48Icon--dealer-details-black-48x48Icon--delete-black-48x48Icon--delivery-black-48x48Icon--down-black-48x48Icon--download-black-48x48Ic-OverlayAlertIcon--externallink-black-48x48Icon-Filledforward-right_adjustedIcon--grid-view-black-48x48IC_gd_Check-Circle170821_Icons_Community170823_Bosch_Icons170823_Bosch_Icons170821_Icons_CommunityIC-logout170821_Icons_Community170825_Bosch_Icons170821_Icons_CommunityIC-shopping-cart2170821_Icons_CommunityIC-upIC_UserIcon--imageIcon--info-i-black-48x48Icon--left-alignedIcon--Less-minimize-black-48x48Icon-FilledIcon--List-Check-grennIcon--List-Check-blackIcon--List-Cross-blackIcon--list-view-mobile-black-48x48Icon--list-view-black-48x48Icon--More-Maximize-black-48x48Icon--my-product-black-48x48Icon--newsletter-black-48x48Icon--payment-black-48x48Icon--print-black-48x48Icon--promotion-black-48x48Icon--registration-black-48x48Icon--Reset-black-48x48Icon--right-alignedshare-circle1Icon--share-black-48x48Icon--shopping-bag-black-48x48Icon-shopping-cartIcon--start-play-black-48x48Icon--store-locator-black-48x48Ic-OverlayAlertIcon--summary-black-48x48tumblrIcon-FilledvineIc-OverlayAlertwhishlist