<?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>Timeslot API</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/76133/timeslot-api</link><description>I use SDK 15.3, nrf52840. 
 https://devzone.nordicsemi.com/nordic/short-range-guides/b/software-development-kit/posts/setting-up-the-timeslot-api 
 Normal use most of the time, after transmitting for a period of time, NRF_RADIO_CALLBACK_SIGNAL_TYPE_RADIO</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Mon, 21 Jun 2021 08:28:48 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/76133/timeslot-api" /><item><title>RE: Timeslot API</title><link>https://devzone.nordicsemi.com/thread/316180?ContentTypeID=1</link><pubDate>Mon, 21 Jun 2021 08:28:48 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:5de8cf50-c4c7-4eaf-a21b-d02935ff5bf0</guid><dc:creator>Einar Thorsrud</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;The error code, line number and file name is only relevant for SDK errors. When there is a SoftDevice assert you need to look at the PC. If you are using the default&amp;nbsp;&lt;code&gt;app_error_fault_handler()&lt;/code&gt; in SDK 15.3 it looks like this:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;__WEAK void app_error_fault_handler(uint32_t id, uint32_t pc, uint32_t info)
{
    __disable_irq();
    NRF_LOG_FINAL_FLUSH();

#ifndef DEBUG
    NRF_LOG_ERROR(&amp;quot;Fatal error&amp;quot;);
#else
    switch (id)
    {
#if defined(SOFTDEVICE_PRESENT) &amp;amp;&amp;amp; SOFTDEVICE_PRESENT
        case NRF_FAULT_ID_SD_ASSERT:
            NRF_LOG_ERROR(&amp;quot;SOFTDEVICE: ASSERTION FAILED&amp;quot;);
            break;
        case NRF_FAULT_ID_APP_MEMACC:
            NRF_LOG_ERROR(&amp;quot;SOFTDEVICE: INVALID MEMORY ACCESS&amp;quot;);
            break;
#endif
        case NRF_FAULT_ID_SDK_ASSERT:
        {
            assert_info_t * p_info = (assert_info_t *)info;
            NRF_LOG_ERROR(&amp;quot;ASSERTION FAILED at %s:%u&amp;quot;,
                          p_info-&amp;gt;p_file_name,
                          p_info-&amp;gt;line_num);
            break;
        }
        case NRF_FAULT_ID_SDK_ERROR:
        {
            error_info_t * p_info = (error_info_t *)info;
            NRF_LOG_ERROR(&amp;quot;ERROR %u [%s] at %s:%u\r\nPC at: 0x%08x&amp;quot;,
                          p_info-&amp;gt;err_code,
                          nrf_strerror_get(p_info-&amp;gt;err_code),
                          p_info-&amp;gt;p_file_name,
                          p_info-&amp;gt;line_num,
                          pc);
             NRF_LOG_ERROR(&amp;quot;End of error report&amp;quot;);
            break;
        }
        default:
            NRF_LOG_ERROR(&amp;quot;UNKNOWN FAULT at 0x%08X&amp;quot;, pc);
            break;
    }
#endif

    NRF_BREAKPOINT_COND;
    // On assert, the system can only recover with a reset.

#ifndef DEBUG
    NRF_LOG_WARNING(&amp;quot;System reset&amp;quot;);
    NVIC_SystemReset();
#else
    app_error_save_and_stop(id, pc, info);
#endif // DEBUG
}&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;When you get a&amp;nbsp;NRF_FAULT_ID_SD_ASSERT, the relevant here is the value of the pc parameter. I you can tell me what it is, and the exact SoftDevice version you use I can check which assert failed. Without it, I can only make assumptions like in my previous post.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Timeslot API</title><link>https://devzone.nordicsemi.com/thread/316001?ContentTypeID=1</link><pubDate>Fri, 18 Jun 2021 06:25:33 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:16fe41f5-06c4-44af-bdcd-a1643bf97078</guid><dc:creator>xixili</dc:creator><description>&lt;p&gt;&lt;span&gt;SoftDevice assert:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;m_error_data.err_code=0,m_error_data.line_num=0,m_error_data.p_file_name=NULL&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Timeslot API</title><link>https://devzone.nordicsemi.com/thread/315918?ContentTypeID=1</link><pubDate>Thu, 17 Jun 2021 14:03:04 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:c5566a89-cd67-4508-9b91-3a8ffc5d7bb6</guid><dc:creator>Einar Thorsrud</dc:creator><description>&lt;p&gt;It would be good to know which SoftDevice assert you get, as I explained. Without knowing it there are still a few things you can do:&lt;/p&gt;
&lt;p&gt;* Doubel check that you always properly disable interrupts etc for devices that the SoftDevice use before the end of the timeslot (like the Radio and TIMER0).&lt;/p&gt;
&lt;p&gt;* Add some margin so that you end the timeslot a bit earlier than you normally should have to. This can be especially relevant if you time the duration of the timeslot sing a timer (which runs of the HF clock), as the SoftDevice relies on RTC0 in this case (which runs of the LF clock). If there is more drift between these clocks for some reason, more margin would help.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Timeslot API</title><link>https://devzone.nordicsemi.com/thread/315910?ContentTypeID=1</link><pubDate>Thu, 17 Jun 2021 13:53:09 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:685bc5bb-e44f-4a18-8889-f0640a9d8216</guid><dc:creator>xixili</dc:creator><description>&lt;p&gt;So how should I solve this problem? timeslot refers to your code&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Timeslot API</title><link>https://devzone.nordicsemi.com/thread/315863?ContentTypeID=1</link><pubDate>Thu, 17 Jun 2021 12:07:30 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:560721d3-4ea5-44bb-85bd-f98a771bda55</guid><dc:creator>Einar Thorsrud</dc:creator><description>&lt;p&gt;That makes sense. Can you cheche which assert you get, meaning which program counter value? You can typically see that from the&amp;nbsp;app_error_fault_handler when you get a&amp;nbsp;NRF_FAULT_ID_SD_ASSERT (it is called with pc as a parameter).&lt;/p&gt;
&lt;p&gt;In most cases with SoftDevice asserts when using timeslot it is related to the application either not cleaning up properly or using resources outside of the timeslot for some reason.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Timeslot API</title><link>https://devzone.nordicsemi.com/thread/315825?ContentTypeID=1</link><pubDate>Thu, 17 Jun 2021 10:33:50 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:3cc7fa37-330c-4f36-953c-60a803898f3f</guid><dc:creator>xixili</dc:creator><description>&lt;p&gt;Call sd_radio_request(&amp;amp;m_timeslot_request) once every 3 seconds; after sending thousands of times, an error may appear SOFTDEVICE: ASSERTION FAILED&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;ASSERTION FAILED&lt;img alt=" " src="https://devzone.nordicsemi.com/resized-image/__size/320x240/__key/communityserver-discussions-components-files/4/11260.png" /&gt;&lt;img alt=" " src="https://devzone.nordicsemi.com/resized-image/__size/320x240/__key/communityserver-discussions-components-files/4/8508.png" /&gt;&lt;img alt=" " src="https://devzone.nordicsemi.com/resized-image/__size/320x240/__key/communityserver-discussions-components-files/4/6445.png" /&gt;&lt;img alt=" " src="https://devzone.nordicsemi.com/resized-image/__size/320x240/__key/communityserver-discussions-components-files/4/12075.png" /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Timeslot API</title><link>https://devzone.nordicsemi.com/thread/314228?ContentTypeID=1</link><pubDate>Tue, 08 Jun 2021 13:10:14 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:a90e12be-51b3-405f-9355-7c429fa4d0c0</guid><dc:creator>Einar Thorsrud</dc:creator><description>&lt;p&gt;I understand. But there is not enough to go on for me to consider what could cause this. Have you done any debugging? What have you found out? Please elaborate.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Timeslot API</title><link>https://devzone.nordicsemi.com/thread/314226?ContentTypeID=1</link><pubDate>Tue, 08 Jun 2021 13:03:19 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:98c178aa-087c-4b3f-9ff0-e2f80f6178b1</guid><dc:creator>xixili</dc:creator><description>&lt;p&gt;Radio interruption will appear at the beginning, but it will be lost after a period of time. Sometimes it is a day, sometimes a few days, and it may appear in a few hours soon. Why is there no radio interruption&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Timeslot API</title><link>https://devzone.nordicsemi.com/thread/314223?ContentTypeID=1</link><pubDate>Tue, 08 Jun 2021 12:57:40 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e1cb7216-8ca6-4bf9-ad17-38674355433b</guid><dc:creator>Einar Thorsrud</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;I see. So you are waiting for a radio interrupt that does not happen. Is this still within a timeslot? Have you debugged to verify that you have some radio activity that should have caused a radio interrupt? Please elaborate / provide much more details so that I can better understand&amp;nbsp;what could be going on.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Timeslot API</title><link>https://devzone.nordicsemi.com/thread/314221?ContentTypeID=1</link><pubDate>Tue, 08 Jun 2021 12:53:41 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:59d1d8df-ce5f-4b4c-a94d-234dc26711f0</guid><dc:creator>xixili</dc:creator><description>&lt;p&gt;Set up a timeslot, use ble and radio at the same time, after a long period of use, conflicts will occur, and the protocol stack will be reset abnormally. I found that it was caused by no radio interruption, how should I solve it?&lt;/p&gt;
&lt;p&gt;Refer to &lt;a href="https://devzone.nordicsemi.com/nordic/short-range-guides/b/software-development-kit/posts/setting-up-the-timeslot-api"&gt;devzone.nordicsemi.com/.../setting-up-the-timeslot-api&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Timeslot API</title><link>https://devzone.nordicsemi.com/thread/314188?ContentTypeID=1</link><pubDate>Tue, 08 Jun 2021 11:41:32 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:a9de39d8-64ad-48e4-b6a3-d766949712bb</guid><dc:creator>Einar Thorsrud</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;I do not fully understand the context of this question. Can you please elaborate / explain in more detail what you do and what the issue is?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>