<?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_IRQn can only be enabled per NVIC_EnableIRQ if Multiprotocol Support?</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/35725/radio_irqn-can-only-be-enabled-per-nvic_enableirq-if-multiprotocol-support</link><description>My application (nRF51 S130 v2.0.1 SDK12.3.0) uses the Radio Timeslot feature for multiprotocol support similarly to the example in https://github.com/NordicPlayground/nrf51-ble-micro-esb-uart . 
 On calling sd_nvic_SetPriority(RADIO_IRQn, RADIO_IRQ_PRIORITY</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Thu, 28 Jun 2018 13:02:59 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/35725/radio_irqn-can-only-be-enabled-per-nvic_enableirq-if-multiprotocol-support" /><item><title>RE: NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE on sd_nvic_SetPriority(RADIO_IRQn, RADIO_IRQ_PRIORITY)</title><link>https://devzone.nordicsemi.com/thread/138132?ContentTypeID=1</link><pubDate>Thu, 28 Jun 2018 13:02:59 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:0797c265-a9b2-41a8-a723-58b761b4771c</guid><dc:creator>ovrebekk</dc:creator><description>&lt;p&gt;Hi&lt;/p&gt;
&lt;p&gt;It will be called implicitly through nrf_esb_init(..), that is correct, but I don&amp;#39;t think this is strictly necessary.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I would have to do some testing to be sure though ;)&lt;/p&gt;
&lt;p&gt;Best regards&lt;br /&gt;Torbjørn&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE on sd_nvic_SetPriority(RADIO_IRQn, RADIO_IRQ_PRIORITY)</title><link>https://devzone.nordicsemi.com/thread/138009?ContentTypeID=1</link><pubDate>Thu, 28 Jun 2018 07:06:40 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:40db5d69-cc0f-4efb-a628-2c9b5393fe12</guid><dc:creator>Darrew</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;RADIO_IRQn is enabled per NVIC_EnableIRQ() in the example nrf51-ble-micro-esb-uart when calling TIMESLOT_BEGIN_IRQHandler.&amp;nbsp;Does&amp;nbsp;this make sense according to your statement?&lt;/p&gt;
&lt;p&gt;Our experience says that RADIO_IRQn must be enabled per NVIC_EnableIRQ in order to get signal RADIO per callback. Can you please confirm this?&lt;/p&gt;
&lt;p&gt;BR&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE on sd_nvic_SetPriority(RADIO_IRQn, RADIO_IRQ_PRIORITY)</title><link>https://devzone.nordicsemi.com/thread/137689?ContentTypeID=1</link><pubDate>Tue, 26 Jun 2018 12:58:42 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:260ebd18-95a1-40d5-be5f-2b13a2d57aca</guid><dc:creator>ovrebekk</dc:creator><description>&lt;p&gt;Hi José&lt;/p&gt;
&lt;p&gt;You can&amp;#39;t change the interrupt priority directly in a timeslot. All the signals will be forwarded at interrupt priority 0 (the highest).&amp;nbsp;&lt;/p&gt;
&lt;p&gt;If you want to run the interrupt at a lower priority I would recommend deferring execution to a lower interrupt context, either by setting a software interrupt in the signal handler, or by using something like the app_scheduler module to schedule the code to be run from the main context.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Best regards&lt;br /&gt;Torbjørn&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE on sd_nvic_SetPriority(RADIO_IRQn, RADIO_IRQ_PRIORITY)</title><link>https://devzone.nordicsemi.com/thread/137565?ContentTypeID=1</link><pubDate>Tue, 26 Jun 2018 05:59:43 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:7042cda4-9647-404a-b7ef-92ab44992fa5</guid><dc:creator>Darrew</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;RADIO_IRQn is enabled per NVIC_EnableIRQ() in the example nrf51-ble-micro-esb-uart when calling TIMESLOT_BEGIN_IRQHandler.&amp;nbsp;Does&amp;nbsp;this make sense according to your statement?&lt;/p&gt;
&lt;p&gt;On the other hand, when using the Softdevice, how can change the pririty level of the RADIO_IRQn?&lt;/p&gt;
&lt;p&gt;BR&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE on sd_nvic_SetPriority(RADIO_IRQn, RADIO_IRQ_PRIORITY)</title><link>https://devzone.nordicsemi.com/thread/137457?ContentTypeID=1</link><pubDate>Mon, 25 Jun 2018 13:38:28 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:6985f538-b820-47c8-be51-d682d0e3d2c2</guid><dc:creator>ovrebekk</dc:creator><description>&lt;p&gt;Hi José&lt;/p&gt;
&lt;p&gt;When using the SoftDevice the radio interrupt is not available, whether or not you are in a timeslot. Radio&amp;nbsp;interrupts will trigger the interrupt handler in the SoftDevice, and events will have to be forwarded from there.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;When in a timeslot radio&amp;nbsp;interrupts are forwarded to the application through timeslot signals, and will trigger the signal handler with the signal_type set to&amp;nbsp;NRF_RADIO_CALLBACK_SIGNAL_TYPE_RADIO. When this signal occurs you can handle the interrupt in a similar way, and check the various event registers to see which of the radio events triggered the interrupt.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;if you take a look at the implementation in the nrf51-ble-micro-esb-uart example you can see that the RADIO_IRQHandler() function is called explicitly from the signal handler (line 174 of esb_timeslot.c):&lt;/p&gt;
&lt;p&gt;&lt;code&gt;case NRF_RADIO_CALLBACK_SIGNAL_TYPE_RADIO:&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp;signal_callback_return_param.params.request.p_next = NULL;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp;signal_callback_return_param.callback_action = NRF_RADIO_SIGNAL_CALLBACK_ACTION_NONE;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp;ESB_TIMESLOT_DEBUG_PIN_SET(ESB_TIMESLOT_DBG_PIN_RADIO_IRQHANDLER);&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp;RADIO_IRQHandler();&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp;ESB_TIMESLOT_DEBUG_PIN_CLEAR(ESB_TIMESLOT_DBG_PIN_RADIO_IRQHANDLER);&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp;break;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Best regards&lt;br /&gt;Torbjørn&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>