SOFTDEVICE: ASSERTION FAILED PC=0x00000A60

Hi,

Application details:

I have a datalogger application that samples data every second. It uses the following modules:

TWIM0 -> To communicate with external RTC clock via I2C.

TWIM1 -> To send data to external display via I2C.

SPIM2 -> To get data from an external ADC with sensor.

QSPI -> To save data to an external memory.

I use BLE central to scan and connect to another custom peripheral device using long range PHY. I send all the data every 10 mins to this device which works as a router.

Everything works correctly most of the time. The application continues to sample when the data is being sent simultaneously.

Issue:

I get a SOFTDEVICE: ASSERTION FAILED that happens inconsistently about 5 to 10 times a day when the BLE central is sending the data. You can see the call stack and PC in the attached picture.

I am using nRF SDK v16.0.0 with s140_nrf52_7.0.1_softdevice. Could you please help me with this issue?

Parents Reply Children
  • Hi Einar,

    Thanks for getting back to me. I usually see SOFTDEVICE: ASSERTION FAILED after I click on continue running the code. Although, this time I got this error as shown in the attached picture.

    I will try and recreate this issue today and get back to you with a screenshot of the SOFTDEVICE: ASSERTION FAILED.

    Any idea as to why the softdevice paused the code based on the previous screenshot? I'm guessing the issue was caused at 0x00020D48.

  • Hi,

    Thanks, this is wat I was looking for. 0x020d46 is the location of an assert in S140 7.0.1.

    Can you say more about when you get this assert? And your interrupt configuration? (Which interrupt priorities do you have for other interrupts in the system?).

    Also, note that if you debug wile in a connection you cannot break or step or similar, or the SoftDevice will assert - so please double check that that was not what happened here.

  • Hi Einar,

    I have 2 central devices (datalogger) connected to 1 peripheral device (router). I use coded PHY for the communication. I usually do not get any error when the router is close (<5m approx.) to the dataloggers. When the router is placed further away (>10m approx.), I get this issue intermittently at the datalogger. Both dataloggers are sending data to the router, connected at 7.5mS connection interval.

    For both applications all my interrupts are set to APP_IRQ_PRIORITY_LOW, except for the cellular modem communicating via UART is set to APP_IRQ_PRIORITY_MID at the router. Could this be the cause of the issue? I tried setting it to APP_IRQ_PRIORITY_LOW, but I get a lot of errors while communicating with the modem when I do this. I am using app_uart_fifo library for communicating with the modem. I think the higher priority IRQ BLE library causes some of the bytes to be missed while the UART is communicating when set to APP_IRQ_PRIORITY_LOW. How could I solve this issue?

    Thanks.

  • Also, yes I did not break or step while in debug. The debugger paused on its own, I have no break points set in code.

    I also tried using APP_IRQ_PRIORITY_LOW_MID for UART0. This gave me the same error as APP_IRQ_PRIORITY_MID at 0x00020D48.

Related