SD Assert fault at address 0x016ADA

Hi,

I have set up a network with 52 nodes that communicate via a vendor model. After a few days, one or more devices have a hardfault and reboot

SD Assert fault at address 0x016ADA

Can you help me what is triggering this error?

Chip nrf52840
SDK 17.1.0
BLE Mesh V5.0.0
Soft device s140_nrf52_7.3.0

best regards
Michael

Parents
  • Any proposal.
    What is the reason for this SD assert at the address 0x016ADA?

  • The hard fault address is different from the hard fault address in the case 98787. 0x016ADA instead of 0x15BA4.

    It's only different because it's a different SoftDevice version, but both points to the same assert in the code. 

    Are you using internal LF RC oscillator for LF clock, or do you have LF crystal? 

    What is NRF_SDH_CLOCK_LF_ACCURACY set to ?

  • Hallo Sigurd

    The NRF_SDH_CLOCK_LF_ACCURACY is set to 1 (500ppm)

    We are using the internal LF RC oscilator.

    // <h> Clock - SoftDevice clock configuration
    
    //==========================================================
    // <o> NRF_SDH_CLOCK_LF_SRC  - SoftDevice clock source.
     
    // <0=> NRF_CLOCK_LF_SRC_RC 
    // <1=> NRF_CLOCK_LF_SRC_XTAL 
    // <2=> NRF_CLOCK_LF_SRC_SYNTH 
    
    #ifndef NRF_SDH_CLOCK_LF_SRC
    #define NRF_SDH_CLOCK_LF_SRC 0
    #endif
    
    // <o> NRF_SDH_CLOCK_LF_RC_CTIV - SoftDevice calibration timer interval. 
    #ifndef NRF_SDH_CLOCK_LF_RC_CTIV
    #define NRF_SDH_CLOCK_LF_RC_CTIV 16
    #endif
    
    // <o> NRF_SDH_CLOCK_LF_RC_TEMP_CTIV - SoftDevice calibration timer interval under constant temperature. 
    // <i> How often (in number of calibration intervals) the RC oscillator shall be calibrated
    // <i>  if the temperature has not changed.
    
    #ifndef NRF_SDH_CLOCK_LF_RC_TEMP_CTIV
    #define NRF_SDH_CLOCK_LF_RC_TEMP_CTIV 0
    #endif
    
    // <o> NRF_SDH_CLOCK_LF_ACCURACY  - External clock accuracy used in the LL to compute timing.
     
    // <0=> NRF_CLOCK_LF_ACCURACY_250_PPM 
    // <1=> NRF_CLOCK_LF_ACCURACY_500_PPM 
    // <2=> NRF_CLOCK_LF_ACCURACY_150_PPM 
    // <3=> NRF_CLOCK_LF_ACCURACY_100_PPM 
    // <4=> NRF_CLOCK_LF_ACCURACY_75_PPM 
    // <5=> NRF_CLOCK_LF_ACCURACY_50_PPM 
    // <6=> NRF_CLOCK_LF_ACCURACY_30_PPM 
    // <7=> NRF_CLOCK_LF_ACCURACY_20_PPM 
    // <8=> NRF_CLOCK_LF_ACCURACY_10_PPM 
    // <9=> NRF_CLOCK_LF_ACCURACY_5_PPM 
    // <10=> NRF_CLOCK_LF_ACCURACY_2_PPM 
    // <11=> NRF_CLOCK_LF_ACCURACY_1_PPM 
    
    #ifndef NRF_SDH_CLOCK_LF_ACCURACY
    #define NRF_SDH_CLOCK_LF_ACCURACY 1
    #endif
    

    Regards Michael

  • Hi,

    Try increasing TIMESLOT_END_SAFETY_MARGIN_US in steps of 100 us up to 1000 us, and see if that improves the behavior. (\mesh\core\include\timeslot.h)

Reply Children
Related