Hello,
after several problems resolved we were quite confident, that the migration to SDK15.3 was successfully completed, but when testing intensively we found a hopefully last problem which we don't know from SDK13.0. For certification purposes we need a stack (S140) with QDID, so we have migrated the project to SDK15.3...
I suppose that the problem is quite similar to the one described in case 223057, due to this I have set the define of APP_TIMER_CONFIG_IRQ_PRIORITY to 6, but unfortunately no change in behavior.
The problem appears after a certain while; I just explain what we do: At our nRF52840 we have connected an acceleration sensor using a SPI-Interface. This acceleration sensor creates an external HW signal when its internal buffer is full; this external interrupt is connected to a GPIO from the nRF52840. Additionally we have connected 2 external Hall signals at other GPIOs - the 1st for wake-up and speed measurement purposes, the second is only used for less than 1 second for measuring a time difference to the first one. In our test we create at this first Hall sensor for a period of 30 seconds a frequency of about 107 Hz which means every around 9 ms. At wake-up the acceleration sensor is configured to measuring mode and starts measurements; when buffer is full the nRF52840 reads that data block of 84 accelerations tripels for x-, y- and z-axis, calculates the length of the effective acceleration vector and stores the highest one. This one is then compared to the highest value of the next data block to get the overall highest one - perhaps this is quite a lot to do for an interrupt function, but in SDK13 it worked fine... The acceleration sensor starts automatically and creates the next buffer full interrupt; this is done until 1 second is achieved; then the procedure of measuring is restarted and the overall highest valie is reset to 0. We see that in one second up to 154 data blocks are read, calculated and compared.
In parallel at the first Hall sensor we measure the incoming pulses over 1 second (Timer2, Counter mode) and also the time (Timer4, Timer mode with 1µs time base) used for these pulses.
Both - the speed and the acceleration - are transmitted via BLE every second.
After 30 seconds of measuring a pause of 40 seconds is given and the nRF is sent to energy saving mode; the acceleration sensor is configured to power save mode.
What we see is that after the around 20th work (30s) and pause (40s) cycle variations appear in the speed (of course in the work phase); also the number of reading-outs of the acceleration sensor decreases down to 0, but the cyclic transmission of the more and more instable speed and decreasing acceleration values is completely correct at the expected time points within the active 30 seconds...
The GPIOTE_IRQn is configured to APP_IRQ_PRIORITY_MID; the APP_TIMER_CONFIG_IRQ_PRIORITY was modified from 7 to 6 as described.
What can I check next? Or is there more to change in sdk_config.h?
Thanks in advance for your help.
Best regards,
matthK