<?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>GPIOTE Tasks</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/36280/gpiote-tasks</link><description>How many GPIOTE Tasks can I use at the same time. I want to drive six different pins with six different tasks which are connected to three events. Each event generates two tasks. Although I am using different channels for each task I can only assign four</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Fri, 07 Sep 2018 11:11:47 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/36280/gpiote-tasks" /><item><title>RE: GPIOTE Tasks</title><link>https://devzone.nordicsemi.com/thread/147766?ContentTypeID=1</link><pubDate>Fri, 07 Sep 2018 11:11:47 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:39bb105e-b5f0-4b47-b1d3-df5f2cc108ba</guid><dc:creator>ovrebekk</dc:creator><description>&lt;p&gt;Hi&lt;/p&gt;
&lt;p&gt;If the RF processing needs to have higher priority than the GPIO update I guess the question comes down to the worst case processing time of the RF packet processing, and if you can tolerate this latency on your GPIO update.&lt;/p&gt;
&lt;p&gt;Since the radio uses DMA to store incoming data in RAM it&amp;#39;s only the process of analyzing and acting upon the incoming data that will require CPU activity.&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: GPIOTE Tasks</title><link>https://devzone.nordicsemi.com/thread/147516?ContentTypeID=1</link><pubDate>Thu, 06 Sep 2018 09:01:48 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:14500544-3380-4db2-923e-d2279cadd1c9</guid><dc:creator>Timur Beganovic</dc:creator><description>&lt;p&gt;HI Torbj&amp;oslash;rn,&lt;/p&gt;
&lt;p&gt;I appreciate a lot your willingness to help me and your knowledge.&lt;/p&gt;
&lt;p&gt;I also think that there is no way to drive more than 4 pins on 51822 using task-event module.&lt;/p&gt;
&lt;p&gt;Regarding your question about interrupt priorities; the application receives RF packets continuosly in a poll manner.&amp;nbsp; Some of these packets contain an instruction which has to be performed&amp;nbsp; without any latency or CPU blocking from something else. The problem is that the application doesn&amp;#39;t know when this particular packet arrived before it parses it. If I implement the whole packet reception using Radio interrupts, that wouldn&amp;#39;t be tolerable for the pins because they control LEDs based on PWM.&lt;/p&gt;
&lt;p&gt;best regards&lt;/p&gt;
&lt;p&gt;Timur&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: GPIOTE Tasks</title><link>https://devzone.nordicsemi.com/thread/147508?ContentTypeID=1</link><pubDate>Thu, 06 Sep 2018 08:48:01 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:bf274982-b8f2-48d2-85a3-d5a848a287d1</guid><dc:creator>ovrebekk</dc:creator><description>&lt;p&gt;Hi&lt;/p&gt;
&lt;p&gt;I am racking my brain trying to think of some workaround, but I am coming up empty...&lt;/p&gt;
&lt;p&gt;On the nRF51 I can&amp;#39;t think of any way to control more than 4 GPIO&amp;#39;s over PPI, so you will have to set the remaining 2 pins from interrupts.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The question is if you could tolerate any latency on the pins, so that you don&amp;#39;t have to give the GPIO interrupt the highest priority. At least then the CPU won&amp;#39;t be blocked if you have important interrupt occurring at a higher priority.&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: GPIOTE Tasks</title><link>https://devzone.nordicsemi.com/thread/147334?ContentTypeID=1</link><pubDate>Wed, 05 Sep 2018 09:42:26 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:553c966a-642c-4118-8a9c-04e376345c9b</guid><dc:creator>Timur Beganovic</dc:creator><description>&lt;p&gt;Any change on the PCB would imply a new PCB design because I am dealing with large amount of devices.&lt;/p&gt;
&lt;p&gt;Besides that, I need to have two operational modes:&lt;/p&gt;
&lt;p&gt;1. to drive two pins together (3 x 2 pins)&lt;/p&gt;
&lt;p&gt;2. to drive all six pins separately&lt;/p&gt;
&lt;p&gt;For the Mode 1, I use 3 GPIOTE channels which generate three different tasks (based on three different Timer events). These tasks call three different ISRs which set/clear two pins at once.&amp;nbsp; My goal is to avoid any ISR because they are blocking the CPU which is critical for my project.&lt;/p&gt;
&lt;p&gt;For the Mode 2, I use three GPIOTE channels which generate three different tasks (based on three different Timer events). These tasks don&amp;#39;t call any ISR but drive three different pins directly. For other three pins I have to use app_timers. CPU blocking in the Mode 2 is not critical for my project.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: GPIOTE Tasks</title><link>https://devzone.nordicsemi.com/thread/147327?ContentTypeID=1</link><pubDate>Wed, 05 Sep 2018 09:22:07 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:a750afba-0fb1-42e7-88e5-c0b97034ff09</guid><dc:creator>ovrebekk</dc:creator><description>&lt;p&gt;Hi&amp;nbsp;&lt;/p&gt;
&lt;p&gt;You are correct. The nRF51 doesn&amp;#39;t allow you to control more than 4 pins through the GPIOTE.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;If the pins are supposed to be the same couldn&amp;#39;t you just interconnect them externally on your PCB?&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: GPIOTE Tasks</title><link>https://devzone.nordicsemi.com/thread/146935?ContentTypeID=1</link><pubDate>Mon, 03 Sep 2018 10:02:33 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:467fe9b9-cf66-4c01-a25a-ad2219ce4064</guid><dc:creator>Timur Beganovic</dc:creator><description>&lt;p&gt;Thank you for the explanation, Still, it doesn&amp;#39;t solve my problem. I already used 3 GPIOTE channels to control 3 pins. The GPIOTEs generate tasks based on timer events (PWM). In order to mirror these 3 pins to another 3 pins I will need 3 additional GPIOTE channels, right? That would be 6 GPIOTE channels altogether.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;best regards&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: GPIOTE Tasks</title><link>https://devzone.nordicsemi.com/thread/144068?ContentTypeID=1</link><pubDate>Tue, 14 Aug 2018 07:03:10 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:993519a9-2183-4fc9-9741-901bc1f1700f</guid><dc:creator>ovrebekk</dc:creator><description>&lt;p&gt;Hi&lt;/p&gt;
&lt;p&gt;Yes, you should be able to set up a GPIOTE input channel on output pin A and connect that to a GPIOTE output channel on bin B over the PPI.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;If you configure both GPIOTE channels in TOGGLE mode you get away with only two GPIOTE channels, but you have to take care to avoid output pin B being inverted compared to pin A.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;An alternative approach is to use two GPIOTE input channels, in HITOLO and LOTOHI mode respectively, and connect them to the CLEAR and SET tasks of the GPIOTE output channel. This will remove the risk of inverting the output, but will require one more GPIOTE channel and one more PPI channel.&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: GPIOTE Tasks</title><link>https://devzone.nordicsemi.com/thread/139675?ContentTypeID=1</link><pubDate>Wed, 11 Jul 2018 07:30:22 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:f86575ae-9a8e-4b72-8a99-1295a9da9a08</guid><dc:creator>Timur Beganovic</dc:creator><description>&lt;p&gt;Thank you Torbj&amp;oslash;rn.&lt;/p&gt;
&lt;p&gt;I just need to mirror the signal from the output pin A (which is timer event driven signal) to the output pin B? Is there any way to achieve this?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: GPIOTE Tasks</title><link>https://devzone.nordicsemi.com/thread/139670?ContentTypeID=1</link><pubDate>Wed, 11 Jul 2018 07:22:26 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:7eaad768-8b60-4ef4-baaf-5a0626c52f66</guid><dc:creator>ovrebekk</dc:creator><description>&lt;p&gt;Hi&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The GPIOTE module in the nRF51 series only has 4 channels, that is correct. This limits you to controlling 4 pins at the time through the GPIOTE.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;In the nRF52832 and nRF52840 devices this has been increased to 8.&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></channel></rss>