Bosch Sensortec Community

    cancel
    Showing results for 
    Search instead for 
    Did you mean: 

    BMA253: register 0x09 (INT_STATUS_0) always returns 0

    BMA253: register 0x09 (INT_STATUS_0) always returns 0

    lisandropm
    New Poster

    In an already-deployed project with 6000 devices around the world we had to switch from a BMA250e to a BMA253. Originally we used two interruptions mapped to INT1 and INT2. The interrupt handler in the µProcessor would then check which interruption pin was high to know which interruption triggered.

    As a firmware update we switched to map all interruptions to INT1 and then read the register 0x09 (INT_STATUS_0) to know which interruption triggered.

    This happens to work perfectly with the BMA250e but on the BMA253 we always read 0.

     

    I proceeded to remap one interrupt in INT1 and another in INT2. Then in the interrupt handler I can see that each of the assigned interruptions work ok, but register 0x09 is sill in 0.

     

    What I might be missing? What extra information can I bring?

    4 REPLIES 4

    FAE_CA1
    Community Moderator
    Community Moderator

    The intenral interrupt engine in BMA253 is the same as the one in BMA250E. This means that your interrupt handler that works for BMA250E should also work for BMA253. Please share with us how you map all interrupts to INT1 pin and how your interrupt handler takes care of the status register 0x09. We will then try to see if we can duplicate this issue or not.


    @FAE_CA1 wrote:

    The intenral interrupt engine in BMA253 is the same as the one in BMA250E.

    This means that your interrupt handler that works for BMA250E should also work for BMA253.


    That's what I would expect, right.


    @FAE_CA1 wrote:

    Please share with us how you map all interrupts to INT1 pin and how your interrupt handler takes care of the status register 0x09. We will then try to see if we can duplicate this issue or not.


    Sure.

     

    Basic config:

     

        retval += bma2x2_set_latch_intr(BMA2x2_LATCH_DURN_50MS);
    
        retval += bma2x2_set_source(BMA2x2_SOURCE_DATA, INTR_DISABLE);
        retval += bma2x2_set_source(BMA2x2_SOURCE_SLOW_NO_MOTION, INTR_ENABLE);
        retval += bma2x2_set_source(BMA2x2_SOURCE_TAP, INTR_DISABLE);
        retval += bma2x2_set_source(BMA2x2_SOURCE_SLOPE, INTR_ENABLE);
        retval += bma2x2_set_source(BMA2x2_SOURCE_HIGH_G, INTR_ENABLE);
        retval += bma2x2_set_source(BMA2x2_SOURCE_LOW_G, INTR_ENABLE);
    
        // Set interrupt outputs, active high level, 1msec pulse, push pull.
        retval += bma2x2_set_intr_output_type(BMA2x2_INTR1_OUTPUT, PUSH_PULL);
        retval += bma2x2_set_intr_output_type(BMA2x2_INTR2_OUTPUT, PUSH_PULL);
    
        // INT1/INT2 outputs active high.
        retval += bma2x2_set_intr_level(BMA2x2_INTR1_LEVEL,ACTIVE_HIGH);
        retval += bma2x2_set_intr_level(BMA2x2_INTR2_LEVEL,ACTIVE_HIGH);
    
        // Set interrupt mapping to INT1 output pin.
        retval += bma2x2_set_intr_slow_no_motion(BMA2x2_INTR1_SLOW_NO_MOTION, INTR_ENABLE);
        retval += bma2x2_set_intr_slope(BMA2x2_INTR1_SLOPE, INTR_ENABLE);
        retval += bma2x2_set_intr_high_g(BMA2x2_INTR1_HIGH_G, INTR_ENABLE);
        retval += bma2x2_set_intr_low_g(BMA2x2_INTR1_LOW_G, INTR_ENABLE);
    
        // Disable non used interruptions.
        retval += bma2x2_set_intr_enable(BMA2x2_DATA_ENABLE, INTR_DISABLE);
        retval += bma2x2_set_intr_enable(BMA2x2_DOUBLE_TAP_INTR, INTR_DISABLE);
        retval += bma2x2_set_intr_enable(BMA2x2_SINGLE_TAP_INTR, INTR_DISABLE);

    And then in the interrupt handler:

     

        uint8_t status;
        uint32_t retval;
    
        retval= bma2x2_get_intr_stat(&status);

    Which for the BMA250e status has the right insterruptions bits in 1 and for the BMA253 we get status = 0.

     

    I'll ask the technicians to provide me with another board just in case something is wrong with mine...



     

    bobk2030
    Occasional Visitor

    Were you able to find a solution?

    terw
    Occasional Visitor

    Hi there,

     

    Any body has found solution to this issue? We are using BMA253 in our product. We face this issue when we set no motion interrupt in bma253 and the device is in motion state. The BMA253 start giving interrupts but when status register is read it show 0. We device stops the motion the BMA253 status register then shows correct value. 

     

    If there is no solution then we might change the BMA253 with some other chip in future revisions.

    Regards 

    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