<?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>Radio lock-up</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/77070/radio-lock-up</link><description>Hi, 
 Using 52833 it seems that sometimes the radio quits responding, ie, it is in NRF_RADIO_STATE_DISABLED state and there is 
 no obvious way to get it out of that state except for NVIC_SystemReset() call. 
 It usually happens when the radio is under</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Fri, 06 Aug 2021 19:23:22 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/77070/radio-lock-up" /><item><title>RE: Radio lock-up</title><link>https://devzone.nordicsemi.com/thread/323850?ContentTypeID=1</link><pubDate>Fri, 06 Aug 2021 19:23:22 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:c1eb8aaf-a0c8-4a8d-ad23-c3e20a001d49</guid><dc:creator>Thomas_E</dc:creator><description>&lt;p&gt;Thank you H&amp;aring;kon, for your advice.&amp;nbsp; Yes it is no doubt a timing problem in the 1st issue, that we introduced in our modifications of esb.&lt;/p&gt;
&lt;p&gt;Tommy&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Radio lock-up</title><link>https://devzone.nordicsemi.com/thread/322810?ContentTypeID=1</link><pubDate>Mon, 02 Aug 2021 09:12:21 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:124d4a9b-d95e-46c3-bf40-1ab85c561df3</guid><dc:creator>H&amp;#229;kon Alseth</dc:creator><description>&lt;p&gt;Hi Tommy,&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
[quote user="Thomas_E"]For the 1st issue we have ACK&amp;#39;s disabled in esb and only use the no-ack branches.&amp;nbsp; Slave processes each request via a callback as soon as the packet has arrived.&amp;nbsp; The periodic packet with 2-byte payload instead of 1-byte payload from Master to Slave (with no response from Slave) has continued to prove successful in avoiding radio lock-up on the Slave side.[/quote]
&lt;p&gt;&amp;nbsp;By going from 1 b to 2 b payload, you&amp;#39;re adding a bit of time to the whole transaction, which indicates that the timing is a bit too tight. I&amp;#39;m glad to hear that you found a workaround, although; it seems that the issue is still present.&lt;/p&gt;
[quote user="Thomas_E"]We&amp;#39;ve resolved the 2nd issue, it appears.&amp;nbsp; We stopped pushing the Master&amp;#39;s radio from active receiving &amp;quot;RX&amp;quot; state to &amp;quot;RXDISABLE&amp;quot; when things go awry, and instead just allow Master&amp;#39;s radio to finish receiving any errant packets.&amp;nbsp; The radio no longer locks up.&amp;nbsp; Not yet anyway.&amp;nbsp; I also checked the Master&amp;#39;s receive buffer size and it is sufficiently large enough to accommodate any size incoming packet.[/quote]
&lt;p&gt;Good to hear! Let me know if any other issues/questions comes up.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Cheers,&lt;/p&gt;
&lt;p&gt;Håkon&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Radio lock-up</title><link>https://devzone.nordicsemi.com/thread/319912?ContentTypeID=1</link><pubDate>Tue, 13 Jul 2021 22:33:40 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:1ca50410-301c-4254-8f49-c0cc817397d0</guid><dc:creator>Thomas_E</dc:creator><description>&lt;p&gt;Hi H&amp;aring;kon,&lt;/p&gt;
&lt;p&gt;Thank you for your suggestions.&lt;/p&gt;
&lt;p&gt;For the 1st issue we have ACK&amp;#39;s disabled in esb and only use the no-ack branches.&amp;nbsp; Slave processes each request via a callback as soon as the packet has arrived.&amp;nbsp; The periodic packet with 2-byte payload instead of 1-byte payload from Master to Slave (with no response from Slave) has continued to prove successful in avoiding radio lock-up on the Slave side.&lt;/p&gt;
&lt;p&gt;We&amp;#39;ve resolved the 2nd issue, it appears.&amp;nbsp; We stopped pushing the Master&amp;#39;s radio from active receiving &amp;quot;RX&amp;quot; state to &amp;quot;RXDISABLE&amp;quot; when things go awry, and instead just allow Master&amp;#39;s radio to finish receiving any errant packets.&amp;nbsp; The radio no longer locks up.&amp;nbsp; Not yet anyway.&amp;nbsp; I also checked the Master&amp;#39;s receive buffer size and it is sufficiently large enough to accommodate any size incoming packet.&lt;/p&gt;
&lt;p&gt;Tommy&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Radio lock-up</title><link>https://devzone.nordicsemi.com/thread/319337?ContentTypeID=1</link><pubDate>Fri, 09 Jul 2021 11:07:08 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:2320f8b6-d0a2-4035-9d57-7872633d8eb7</guid><dc:creator>H&amp;#229;kon Alseth</dc:creator><description>[quote user="Thomas_E"]How long should we wait between powering off and powering on the radio, if we resort to that measure ?[/quote]
&lt;p&gt;&amp;nbsp;One 16M cycle (62.5 ns). You can generate such a wait condition by reading any events register, (void)NRF_TIMER3-&amp;gt;EVENTS_COMPARE[0];.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
[quote user="Thomas_E"]&lt;p&gt;1) Master transmits a packet with 1-byte payload to Slave on a periodic basis.&amp;nbsp; Slave does not respond, only receives.&amp;nbsp; Eventually the Slave&amp;#39;s radio locks up.&lt;/p&gt;
&lt;p&gt;If instead the Master sends packet with 2-byte payload then the Slave&amp;#39;s radio does not ever lock up.&lt;/p&gt;
&lt;p&gt;So this problem seems to be solved, though we don&amp;#39;t know why 2-byte payload solves it.&amp;nbsp; Probably something more subtle in our handling of the radio that we have not uncovered.&lt;/p&gt;[/quote]
&lt;p&gt;This sound like a timing issue, do you allow the slave to process the request?&lt;/p&gt;
&lt;p&gt;Do you dynamically upload a ACK-payload when the slave receives a payload? If so, there&amp;#39;s a very small window of opportunity where the ACK will actually go out on-air.&lt;/p&gt;
&lt;p&gt;I would strongly recommend that you always send a payload to let the slave prepare for ACK payload, then a new dummy-payload to fetch it.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
[quote user="Thomas_E"]&lt;p&gt;2) Master and Slave are continuously sending packets back and forth, with somewhat tight timing constraints.&amp;nbsp; Master always initiates with a small request packet, then Slave sends a larger data packet.&amp;nbsp; Our connection interval is 1.5 milliseconds.&lt;/p&gt;
&lt;p&gt;If there is too much interference for too long, the Master&amp;#39;s radio will lock up.&amp;nbsp; The only thing unusual that we do is that sometimes the Master is receiving a lengthy data packet which unexpectedly spills over into the subsequent connection interval, and so we push the Master&amp;#39;s radio from active receiving state &amp;quot;RX&amp;quot; to &amp;quot;RXDISABLE&amp;quot; to cut off the errant run-away packet.&amp;nbsp; This appears to be legal from the radio state machine diagram.&lt;/p&gt;[/quote]
&lt;p&gt;&amp;nbsp;Does your buffers allow for such spills?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Kind regards,&lt;/p&gt;
&lt;p&gt;Håkon&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Radio lock-up</title><link>https://devzone.nordicsemi.com/thread/319249?ContentTypeID=1</link><pubDate>Thu, 08 Jul 2021 22:42:20 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:51e06d1f-64b7-49f5-adcc-255de419c81c</guid><dc:creator>Thomas_E</dc:creator><description>&lt;p&gt;Hi H&amp;aring;kon,&lt;/p&gt;
&lt;p&gt;Thank you for asking.&lt;/p&gt;
&lt;p&gt;Not entirely resolved.&lt;/p&gt;
&lt;p&gt;We actually have 2 contexts where this issue presents itself:&lt;/p&gt;
&lt;p&gt;1) Master transmits a packet with 1-byte payload to Slave on a periodic basis.&amp;nbsp; Slave does not respond, only receives.&amp;nbsp; Eventually the Slave&amp;#39;s radio locks up.&lt;/p&gt;
&lt;p&gt;If instead the Master sends packet with 2-byte payload then the Slave&amp;#39;s radio does not ever lock up.&lt;/p&gt;
&lt;p&gt;So this problem seems to be solved, though we don&amp;#39;t know why 2-byte payload solves it.&amp;nbsp; Probably something more subtle in our handling of the radio that we have not uncovered.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;2) Master and Slave are continuously sending packets back and forth, with somewhat tight timing constraints.&amp;nbsp; Master always initiates with a small request packet, then Slave sends a larger data packet.&amp;nbsp; Our connection interval is 1.5 milliseconds.&lt;/p&gt;
&lt;p&gt;If there is too much interference for too long, the Master&amp;#39;s radio will lock up.&amp;nbsp; The only thing unusual that we do is that sometimes the Master is receiving a lengthy data packet which unexpectedly spills over into the subsequent connection interval, and so we push the Master&amp;#39;s radio from active receiving state &amp;quot;RX&amp;quot; to &amp;quot;RXDISABLE&amp;quot; to cut off the errant run-away packet.&amp;nbsp; This appears to be legal from the radio state machine diagram.&lt;/p&gt;
&lt;p&gt;So we are otherwise still investigating the cause of this lock-up.&amp;nbsp;&amp;nbsp; Have not found anything out of the ordinary yet with regard to timers / ppi / pertinent radio registers, but we could certainly be missing something.&lt;/p&gt;
&lt;p&gt;How long should we wait between powering off and powering on the radio, if we resort to that measure ?&lt;/p&gt;
&lt;p&gt;Tommy&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Radio lock-up</title><link>https://devzone.nordicsemi.com/thread/318888?ContentTypeID=1</link><pubDate>Wed, 07 Jul 2021 07:05:51 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:5da0f3a8-7d49-4011-b902-7398dfe57d56</guid><dc:creator>H&amp;#229;kon Alseth</dc:creator><description>&lt;p&gt;Hi Tommy,&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I&amp;#39;m glad to hear this.&lt;/p&gt;
&lt;p&gt;Did you find the root cause of your issue?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Kind regards,&lt;/p&gt;
&lt;p&gt;Håkon&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Radio lock-up</title><link>https://devzone.nordicsemi.com/thread/318842?ContentTypeID=1</link><pubDate>Tue, 06 Jul 2021 15:27:48 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:11308821-3481-4d28-bb3d-4a9976c3c1c9</guid><dc:creator>Thomas_E</dc:creator><description>&lt;p&gt;We are using SDK 17.0.2 .&lt;/p&gt;
&lt;p&gt;Thank you your answer was very helpful.&lt;/p&gt;
&lt;p&gt;Tommy&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Radio lock-up</title><link>https://devzone.nordicsemi.com/thread/318626?ContentTypeID=1</link><pubDate>Mon, 05 Jul 2021 11:53:16 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:849ce014-3396-490c-8c99-bb96fba40965</guid><dc:creator>H&amp;#229;kon Alseth</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;As long as you follow the state diagram of the radio, you should not get into such a mode:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://infocenter.nordicsemi.com/topic/ps_nrf52833/radio.html?cp=4_1_0_5_17_4#concept_rnf_nml_4r"&gt;https://infocenter.nordicsemi.com/topic/ps_nrf52833/radio.html?cp=4_1_0_5_17_4#concept_rnf_nml_4r&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
[quote user=""]&lt;p&gt;ie, it is in NRF_RADIO_STATE_DISABLED state and there is&lt;/p&gt;
&lt;p&gt;no obvious way to get it out of that state except for NVIC_SystemReset() call.&lt;/p&gt;[/quote]
&lt;p&gt;You could try catching this scenario, then enter debug state to see if all the radio registers are in order, as well as the PPI channels / timers are enabled.&lt;/p&gt;
&lt;p&gt;If power cycling the peripheral itself (NRF_RADIO-&amp;gt;POWER =0; wait; NRF_RADIO-&amp;gt;POWER=1; init_radio()) does not work, it is a indication that the problem is outside of the scope of the radio itself (ie. timers or ppi channels)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Which version of the SDK are you using?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Kind regards,&lt;/p&gt;
&lt;p&gt;Håkon&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>