<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://devzone.nordicsemi.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>nRF52840 SDK16 - SAADC + RTC + PPI (power optimized solution)</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/82990/nrf52840-sdk16---saadc-rtc-ppi-power-optimized-solution</link><description>Hi everyone, 
 There is an open ticket that I need support with because the responsible engineer will be out of the office until the new year. 
 In a nutshell: 
 I design a low-power application and I want to sample 8 pressure sensors that are connected</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Thu, 10 Feb 2022 13:36:36 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/82990/nrf52840-sdk16---saadc-rtc-ppi-power-optimized-solution" /><item><title>RE: nRF52840 SDK16 - SAADC + RTC + PPI (power optimized solution)</title><link>https://devzone.nordicsemi.com/thread/352350?ContentTypeID=1</link><pubDate>Thu, 10 Feb 2022 13:36:36 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:264b91ea-fd54-42ad-b564-d42e6a76ac60</guid><dc:creator>Einar Thorsrud</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;That will not work. Calling&amp;nbsp;nrfx_saadc_sample() in the end calls&amp;nbsp;nrfx_saadc_sample(), which looks like this:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;nrfx_err_t nrfx_saadc_sample()
{
    NRFX_ASSERT(m_cb.state != NRFX_DRV_STATE_UNINITIALIZED);

    nrfx_err_t err_code = NRFX_SUCCESS;
    if (m_cb.adc_state != NRF_SAADC_STATE_BUSY)
    {
        err_code = NRFX_ERROR_INVALID_STATE;
    }
    else if (m_cb.low_power_mode)
    {
        nrf_saadc_task_trigger(NRF_SAADC_TASK_START);
    }
    else
    {
        nrf_saadc_task_trigger(NRF_SAADC_TASK_SAMPLE);
    }

    NRFX_LOG_INFO(&amp;quot;Function: %s, error code: %s.&amp;quot;, __func__, NRFX_LOG_ERROR_STRING_GET(err_code));
    return err_code;
}&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;So you need to have set everything up for sampling, and not for instance, be in the middle of another sampling. If you want to do thing like this where you juts call a function and everything is done for you and you are ready again once it returns you need to use the blocking API instead, which is nrfx_saadc_sample_convert() in this case.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52840 SDK16 - SAADC + RTC + PPI (power optimized solution)</title><link>https://devzone.nordicsemi.com/thread/351953?ContentTypeID=1</link><pubDate>Wed, 09 Feb 2022 07:10:31 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:d1e5abfb-7b69-4df5-a5e4-468835afe904</guid><dc:creator>Nikosant03</dc:creator><description>&lt;p&gt;Thank you for your answer &lt;a href="https://devzone.nordicsemi.com/members/hmolesworth"&gt;hmolesworth&lt;/a&gt; but I cannot modify the hardware at the moment. However I do not understand why I cannot sampling in a loop like this&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;for(uint_8 i=0; i&amp;lt;no_of_sensors; i++){
nrf_drv_saadc_sample();
}&lt;/pre&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52840 SDK16 - SAADC + RTC + PPI (power optimized solution)</title><link>https://devzone.nordicsemi.com/thread/351918?ContentTypeID=1</link><pubDate>Tue, 08 Feb 2022 18:10:24 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:35b71b32-e906-4012-a93e-a104b3aa4e86</guid><dc:creator>hmolesworth</dc:creator><description>&lt;p&gt;Apart from timing and power consumption, what analogue mux are you using? It is not too difficult to make external sample/hold circuits for each analogue pressure sensor to effectively give synchronous ADC sampling if you are able to modify the hardware. A single sample pin would then capture all 8 values simultaneously which would be read out with less importance on SAADC sampling speed as the serial box-car waveform&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52840 SDK16 - SAADC + RTC + PPI (power optimized solution)</title><link>https://devzone.nordicsemi.com/thread/351746?ContentTypeID=1</link><pubDate>Tue, 08 Feb 2022 11:02:50 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:a1fd694f-1ebd-41f4-a9f8-896e6276c0e6</guid><dc:creator>Nikosant03</dc:creator><description>&lt;p&gt;Hi Einar, sorry for the late reply.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;Well, it seems that the best approach is using the app timer, however I learned a lot of things by experimenting with alternative solutions. In my case, the sampling interval is not super critical, but the power consumption is (and the PPI increases the power consumption significantly).&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;Now my task is to read the IMU (I2C protocol) and 8 analog pressure sensors (connected on a MUX) with a frequency of 100Hz and send the payload through BLE. I want to start sampling when the user enables the notifications&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;So I start an app timer when the notifications are enabled&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;static void on_cus_evt(ble_cus_t *p_cus_service,
  ble_cus_evt_t *p_evt, int gatt_handler) {
  ret_code_t err_code;

  if (gatt_handler == CCCD_HANDLE) {
    switch (p_evt-&amp;gt;evt_type) {
    case BLE_CUS_EVT_NOTIFICATION_ENABLED:
      NRF_LOG_INFO(&amp;quot;Notification Enabled&amp;quot;);
      notification = ENABLE;

      err_code = app_timer_start(m_notification_timer_id, samplingRate, NULL);
      APP_ERROR_CHECK(err_code);
      
      
      ........
      ....
      ..
      }&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;When the timer expires (every 10ms), it calls the read_sensor() where I want initially read the IMU, then the pressure sensors, and then transmit the data.&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;void read_sensors(void *p_context) {

  ret_code_t err_code;
  UNUSED_PARAMETER(p_context);

  // Read the IMU
  IMU_read(&amp;amp;sampling);

  // Read the pressure sensors
  for (uint8_t i = 0; i &amp;lt; NO_SENSORS - 1; i++) {
    pressure_sensors_read(&amp;amp;sampling);
  }

  sampling.index = 0;

  // Increment the packet counter
  packet_increment(&amp;amp;sampling);

  logger(&amp;amp;sampling);

  // Buffer that payload
  my_sensors_buffer(&amp;amp;sampling);

  // if the buffer is not empty Tx data
  if (!nrf_queue_is_empty(&amp;amp;m_sensor_data_queue)) {
    data_tx(&amp;amp;sampling);
  }
}&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;However when I run the for loop to read all the sensors, I read just the first sensor and not the other seven&lt;/p&gt;
&lt;p&gt;To read the pressure sensors I used an additional app timer and I set the SAADC_INERVAL to 50us just to read the sensors fast&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;void pressure_sensors_read(struct s_sampling *sampling) {
  ret_code_t err_code;
  err_code = app_timer_start(m_SAADC_timer_id, SAADC_INTERVAL, NULL);
  APP_ERROR_CHECK(err_code);
}

void saadc_sample() {
  ret_code_t err_code;

  err_code = app_timer_stop(m_SAADC_timer_id);
  APP_ERROR_CHECK(err_code);

  err_code = nrf_drv_saadc_sample(); // na - trigger sampling
  APP_ERROR_CHECK(err_code);
}&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;By the way this is my saadc callback function&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;void saadc_callback(nrf_drv_saadc_evt_t const *p_event) {

  ret_code_t err_code;

  if (p_event-&amp;gt;type == NRF_DRV_SAADC_EVT_DONE) { 

    err_code = nrfx_saadc_buffer_convert(p_event-&amp;gt;data.done.p_buffer, SAMPLES_IN_BUFFER); // convert two&amp;#39;s complement to a proper value.
    APP_ERROR_CHECK(err_code);

    NRF_LOG_INFO(&amp;quot;FF[%d]: %d&amp;quot;, sampling.index, p_event-&amp;gt;data.done.p_buffer[0]);

    sampling.flexi_force[sampling.index++] = p_event-&amp;gt;data.done.p_buffer[0];

    selectMuxPin(sampling.index); // na - change MUX channel to read the next sensor
  }
}&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;The&amp;nbsp;&lt;strong&gt;NRF_LOG_INFO(&amp;quot;FF[%d]:&lt;/strong&gt;.... prints just once&lt;/p&gt;
&lt;p&gt;So, how could I read the pressure sensors before transmitting payload? Any example?&lt;/p&gt;
&lt;p&gt;Thanks!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52840 SDK16 - SAADC + RTC + PPI (power optimized solution)</title><link>https://devzone.nordicsemi.com/thread/344761?ContentTypeID=1</link><pubDate>Wed, 22 Dec 2021 10:07:12 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:0e659922-d781-4ce2-bde5-260b1c1d23f7</guid><dc:creator>Einar Thorsrud</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
[quote user="Nikosant03"]Something like that (I used RTC for now instead of app timer)?[/quote]
&lt;p&gt;Something like that, but not exactly like here.&lt;/p&gt;
&lt;p&gt;I really recommend you use the app_timer instead, as that implements some features for you which you need. And prevents you from ending up in a few pitfalls, which you have done here. Looking at your RTC handler, you first call&amp;nbsp;nrf_drv_saadc_sample(), and after that has completed you configure the RTC for the next compare event. But a bit of time has elapsed here, so you will have more ticks than you had planned in between here.&lt;/p&gt;
[quote user="Nikosant03"]The RTC IRQ priority is set to 6.&amp;nbsp;Should it be 7?[/quote]
&lt;p&gt;The interrupt priorities does not matter much in itself, but matters relative to others in the system, so this is application specific. How important is this timing compared to other events in the system, and can other events handle being blocked for too long? If you can live with a bit of jitter in the sampling interval, then using a low priority (like 7) makes sense, or perhaps even moving it to the main loop (no interrupt at all).&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52840 SDK16 - SAADC + RTC + PPI (power optimized solution)</title><link>https://devzone.nordicsemi.com/thread/344661?ContentTypeID=1</link><pubDate>Tue, 21 Dec 2021 16:01:07 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:79f907ea-418d-4714-9464-c41dbc9bf800</guid><dc:creator>Nikosant03</dc:creator><description>[quote userid="7377" url="~/f/nordic-q-a/82990/nrf52840-sdk16---saadc-rtc-ppi-power-optimized-solution/344622#344622"]&lt;p&gt;No, you should not need two app timers. Just a single one where you do the following:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Enable the SAADC&lt;/li&gt;
&lt;li&gt;Sample all sensors back to back&lt;/li&gt;
&lt;li&gt;Disable SAADC&lt;/li&gt;&lt;/ol&gt;[/quote]
&lt;p&gt;Something like that (I used RTC for now instead of app timer)?&lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration:underline;"&gt;&lt;strong&gt;Definitions&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;#define RTC_FREQUENCY 32                               // Determines the RTC frequency and prescaler
#define SAADC_SAMPLE_INTERVAL_MS 1000                  // Interval in milliseconds at which RTC times out and triggers SAADC sample task (
#define SAADC_SAMPLES_IN_BUFFER 1                      // Number of SAADC samples in RAM before returning a SAADC event. For low power SAADC set this constant to 1. Otherwise the EasyDMA will be enabled for an extended time which consumes high current.
#define SAADC_OVERSAMPLE NRF_SAADC_OVERSAMPLE_DISABLED // Oversampling setting for the SAADC. Setting oversample to 4x This will make the SAADC output a single averaged value when the SAMPLE task is triggered 4 times. Enable BURST mode to make the SAADC sample 4 times when triggering SAMPLE task once.
#define SAADC_BURST_MODE 0                             // Set to 1 to enable BURST mode, otherwise set to 0.
#define SENSORS 8

const nrf_drv_rtc_t rtc = NRF_DRV_RTC_INSTANCE(2); /**&amp;lt; Declaring an instance of nrf_drv_rtc for RTC2. */
static uint32_t rtc_ticks = RTC_US_TO_TICKS(SAADC_SAMPLE_INTERVAL_MS * 1000, RTC_FREQUENCY);
static nrf_saadc_value_t m_buffer_pool[2][SAADC_SAMPLES_IN_BUFFER];
static uint32_t m_adc_evt_counter = 0;&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration:underline;"&gt;&lt;strong&gt;RTC handler&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;static void rtc_handler(nrf_drv_rtc_int_type_t int_type) {
  uint32_t err_code;

  if (int_type == NRF_DRV_RTC_INT_COMPARE0) {
    nrf_drv_saadc_sample(); // Trigger the SAADC SAMPLE task

    err_code = nrf_drv_rtc_cc_set(&amp;amp;rtc, 0, rtc_ticks, true); // Set RTC compare value and enable the interrupt
    APP_ERROR_CHECK(err_code);
    m_adc_evt_counter = 0;
    nrf_drv_rtc_counter_clear(&amp;amp;rtc); // Clear the RTC counter to start count from zero
  }
}&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration:underline;"&gt;&lt;strong&gt;ADC handler&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;void saadc_callback(nrf_drv_saadc_evt_t const *p_event) {
  ret_code_t err_code;
  if (p_event-&amp;gt;type == NRF_DRV_SAADC_EVT_DONE) // Capture offset calibration complete event
  {
    err_code = nrf_drv_saadc_buffer_convert(p_event-&amp;gt;data.done.p_buffer, SAADC_SAMPLES_IN_BUFFER); // Set buffer so the SAADC can write to it again.
    APP_ERROR_CHECK(err_code);

    NRF_LOG_INFO(&amp;quot;ADC event number: %d\r\n&amp;quot;, (int)m_adc_evt_counter); // Print the event number on UART

    for (int i = 0; i &amp;lt; p_event-&amp;gt;data.done.size; i++) {
      NRF_LOG_INFO(&amp;quot;SAADC result: %d\r\n&amp;quot;, p_event-&amp;gt;data.done.p_buffer[i]); // Print the SAADC result on UART
    }

    m_adc_evt_counter++;
    if ((m_adc_evt_counter % SENSORS) != 0) { // Sample all the sensors

      nrf_drv_saadc_sample(); // Trigger the SAADC SAMPLE task
      //add code to switch the MUX
    }
  }
}&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;The RTC IRQ priority is set to 6.&amp;nbsp;Should it be 7? I do not have experience with differing processing. Is this something essential that I should include?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52840 SDK16 - SAADC + RTC + PPI (power optimized solution)</title><link>https://devzone.nordicsemi.com/thread/344622?ContentTypeID=1</link><pubDate>Tue, 21 Dec 2021 14:10:32 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:3cc1e5b2-c523-4191-894a-5d4eafe2359b</guid><dc:creator>Einar Thorsrud</dc:creator><description>&lt;p&gt;No, you should not need two app timers. Just a single one where you do the following:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Enable the SAADC&lt;/li&gt;
&lt;li&gt;Sample all sensors back to back&lt;/li&gt;
&lt;li&gt;Disable SAADC&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Note that the above would take a bit of time to complete, so you should either ensure that the interrupt priority of the app_timer is lower than other interrupts (by setting&amp;nbsp;APP_TIMER_CONFIG_IRQ_PRIORITY in sdk_config.h accordingly), or defer the actual processing to the main loop (either manually or using the &lt;a href="https://infocenter.nordicsemi.com/topic/sdk_nrf5_v17.1.0/lib_scheduler.html"&gt;app_scheduler&lt;/a&gt;).&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52840 SDK16 - SAADC + RTC + PPI (power optimized solution)</title><link>https://devzone.nordicsemi.com/thread/344621?ContentTypeID=1</link><pubDate>Tue, 21 Dec 2021 14:05:29 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:22a04a8c-5dad-4178-8b7e-a82595fbb629</guid><dc:creator>Nikosant03</dc:creator><description>&lt;p&gt;Thank Einar,&lt;/p&gt;
&lt;p&gt;So I need two app timers? The first one will expire every 10ms&amp;nbsp;to start sampling with the first sensor and then I need the second app timer to keep sampling the rest 7 sensors right (probably 80-100us it would be fine)? But now I am thinking that 80-100us is fast enough and could be a problem with the higher priority interrupts.&lt;/p&gt;
&lt;p&gt;The requirement is to start sampling every 10ms BUT the sampling between the sensors (8 in total) to be done as&amp;nbsp;fast as possible.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52840 SDK16 - SAADC + RTC + PPI (power optimized solution)</title><link>https://devzone.nordicsemi.com/thread/344603?ContentTypeID=1</link><pubDate>Tue, 21 Dec 2021 13:20:24 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:d345a1ac-1755-4cea-b2c3-e1c0712cb82d</guid><dc:creator>Einar Thorsrud</dc:creator><description>&lt;p&gt;Yes, it will. Not on its own, though. You also need to disable the SAADC (nrf_saadc_int_disable()) when done and re-enable it before using it in order to obtain low power consumption (if not, the SAADC will always be enabled and so the high frequency clock will also always run).&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52840 SDK16 - SAADC + RTC + PPI (power optimized solution)</title><link>https://devzone.nordicsemi.com/thread/344601?ContentTypeID=1</link><pubDate>Tue, 21 Dec 2021 13:15:46 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:b876b046-7ac7-4e11-86e3-d36a9f1a25bf</guid><dc:creator>Nikosant03</dc:creator><description>&lt;p&gt;Hi Einar,&lt;/p&gt;
&lt;p&gt;So you suggest&amp;nbsp;not using&amp;nbsp;the PPI&amp;nbsp;but just application timers because my sampling frequency is low? This will keep down the power consumption since I won&amp;#39;t use PPI I guess?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52840 SDK16 - SAADC + RTC + PPI (power optimized solution)</title><link>https://devzone.nordicsemi.com/thread/344591?ContentTypeID=1</link><pubDate>Tue, 21 Dec 2021 12:38:02 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:3fe168e5-25e3-4bf6-a5ee-4405a2022f1f</guid><dc:creator>Einar Thorsrud</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;The suggestion you already got makes sense I would say. Though I would simplify even further and simply us an extra repeated app_timer, which gives you all you need out of the box.&amp;nbsp;This way simply do the SAADC handling from SW, and use a normal system on low power sleep in between.&lt;/p&gt;
&lt;p&gt;The down-side of this approach is that as you do this in SW, a higher priority interrupt would delay your sampling. As you sample every 10 ms (not very often) that is perhaps not a big problem? Also, depending on interrupt priorities and durations of the high priority interrupts you have in the rest of your code, the actual worst case delay will probably be very short compared to the 10 ms interval.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52840 SDK16 - SAADC + RTC + PPI (power optimized solution)</title><link>https://devzone.nordicsemi.com/thread/344454?ContentTypeID=1</link><pubDate>Tue, 21 Dec 2021 00:19:18 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:82321fe5-a7eb-4762-bbe8-83f643bdd0a0</guid><dc:creator>Mehmet Nuri</dc:creator><description>&lt;p&gt;why not do the whole thing under RTC Compare event handler ? set the new event at the end of the handler and you wont need to time the whole thing up. And by the way, you can use app_timer for this. App timer uses RTC1 and saadc uses app_timer. An RTC can configure 4 compare event. 1 used by the saadc. you have 3 of them free. you can set a app_timer event(basically compare event) and do the saadc readings in event handler. at the end of the handler you set a new timer and so on. You just remember not to go to sleep in app_timer event handler. it just stucks there. I just discovered it :D you can look into my ticket. I use saadc and app_timer. whole code is not shared but what you need is there.&amp;nbsp;&lt;a href="https://devzone.nordicsemi.com/f/nordic-q-a/82938/app_timer-interrupt-doesn-t-wake-the-processor-from-system-on-sleep" rel="noopener noreferrer" target="_blank"&gt;Look at my ticket&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>