<?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>How to use PWM Sequence for complex LED control ( n times dimming and then stop )</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/122235/how-to-use-pwm-sequence-for-complex-led-control-n-times-dimming-and-then-stop</link><description>Hi Nordic, 
 
 I want to implement a LED blinking like below pseudo code. I&amp;#39;d like to use PWM sequence Timer x n , GPIOTE, PPI since it doesn&amp;#39;t consume any CPU time. for (10 times) { for (100 times) } LED_ON : 0.4ms LED_OFF : 0.6ms } LED_OFF : 200ms </description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Mon, 16 Jun 2025 13:38:43 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/122235/how-to-use-pwm-sequence-for-complex-led-control-n-times-dimming-and-then-stop" /><item><title>RE: Is there TIMER + GPIOTE + PPI exampe ?</title><link>https://devzone.nordicsemi.com/thread/539402?ContentTypeID=1</link><pubDate>Mon, 16 Jun 2025 13:38:43 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:127f91fd-54ca-4b73-bbd5-e33689880efe</guid><dc:creator>bluemountain</dc:creator><description>&lt;p&gt;Thanks,.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;I replaced NRFX_PWM_PIN_NOT_USED&amp;nbsp; with&amp;nbsp; &amp;nbsp;NRF_PWM_PIN_NOT_CONNECTED. to fix a compile error.&amp;nbsp;After that, I compiled and flashed the code onto nRF52840. The LED dimming works great, but it keeps dimming continuously without stop.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;(void)nrfx_pwm_complex_playback(&amp;amp;pwm_instance, &amp;amp;led_on_seq, &amp;amp;led_off_seq, &lt;span style="font-size:150%;"&gt;&lt;strong&gt;&lt;span style="color:#ff6600;"&gt;1&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;,&lt;br /&gt; NRFX_PWM_FLAG_LOOP);&lt;br /&gt;The fourth parameter &amp;#39;1&amp;#39; is the playback count, which should go into the LOOP register.&amp;nbsp;&lt;br /&gt;From what I understand, this should control the number of dimming cycles. So, the LED should stop after one dimming cycle.&amp;nbsp;&lt;br /&gt;And if I change the value to 3, the LED should dim three times and then stop.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;However, no matter what number I use, the LED never stops dimming.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;span style="text-decoration:line-through;"&gt;Could you please check the code and teach me how to correctly specify the number of dimming cycles?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;--&amp;gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;After I change&amp;nbsp;&amp;nbsp;&lt;span&gt;NRFX_PWM_FLAG_LOOP&amp;nbsp; to&amp;nbsp;&amp;nbsp;&lt;/span&gt;NRFX_PWM_FLAG_STOP, LED dimming stops.&amp;nbsp;&lt;br /&gt;I&amp;#39;ll study the code and check the register settings in detail.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;I&amp;#39;ll open new ticket when I have another question.&amp;nbsp;&lt;br /&gt;Please close this ticket.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;Note.&amp;nbsp;&lt;br /&gt;The title of this ticket does not match with the contents. So, I changed it.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;br /&gt;Best Regards,&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Is there TIMER + GPIOTE + PPI exampe ?</title><link>https://devzone.nordicsemi.com/thread/539310?ContentTypeID=1</link><pubDate>Mon, 16 Jun 2025 07:02:40 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:2851d3ee-7354-434c-8e5c-ebfddacbde54</guid><dc:creator>Vidar Berg</dc:creator><description>&lt;p&gt;Please try with the sample posted here:&amp;nbsp;&lt;a href="https://devzone.nordicsemi.com/f/nordic-q-a/104487/softblink-in-ncs-zephyr/449543"&gt;RE: Softblink in NCS/Zephyr&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Is there TIMER + GPIOTE + PPI exampe ?</title><link>https://devzone.nordicsemi.com/thread/539261?ContentTypeID=1</link><pubDate>Sat, 14 Jun 2025 03:55:24 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:c3b98f24-2685-4af4-9a62-0d8bb498b711</guid><dc:creator>bluemountain</dc:creator><description>&lt;p&gt;Hi Turbo,&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;As your suggestion, I&amp;#39;ve tried to make the LED control with PWM. But, I couldn&amp;#39;t make it.&amp;nbsp;&lt;br /&gt;I had used PWM and sequence, but it just show about 1s ON without any blinking.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Can you see the code below and what I got wrong ?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ff6600;font-size:150%;"&gt;&lt;strong&gt;This is what I want to do&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp;* for ( n_blink &amp;nbsp;) { &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // &amp;#39;n_blink&amp;#39; for number of visual toggle&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp;* &amp;nbsp;for ( n_fast_blink ) { &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;#39;fast&amp;#39; for LED bright control&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp;* &amp;nbsp; &amp;nbsp;led on : &amp;nbsp; &amp;nbsp;t_fast_on_us &amp;nbsp; us &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // &amp;nbsp; &amp;nbsp; t_fast_on_us + t_fast_off_us makes &amp;#39;t_on&amp;#39; since LED toggles very fast&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp;* &amp;nbsp; &amp;nbsp;led off &amp;nbsp;: &amp;nbsp; t_fast_off_us &amp;nbsp; us&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp;* &amp;nbsp; }&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp;* &amp;nbsp; &amp;nbsp;led off : t_off_us &amp;nbsp; us &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // &amp;#39;t_off&amp;#39; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp;* }&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span&gt;led_blinkx2_conf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /* n_f_blinks &amp;nbsp;*/&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /* t_f_on_us &amp;nbsp; */&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;100&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;1000&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /* t_f_off_us &amp;nbsp;*/&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;100&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;1000&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /* n_blink &amp;nbsp; &amp;nbsp; */&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /* t_off_us &amp;nbsp; &amp;nbsp;*/&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;200&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;1000&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; );&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;span style="color:#ff6600;font-size:150%;"&gt;&lt;strong&gt;Settings&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;Read-back&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; NRF_PWM0-&amp;gt;PSEL.OUT[0] = 0x0000000D 13&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; NRF_PWM0-&amp;gt;PSEL.OUT[1] = 0xFFFFFFC0 -64&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; NRF_PWM0-&amp;gt;PSEL.OUT[2] = 0xFFFFFFC0 -64&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; NRF_PWM0-&amp;gt;PSEL.OUT[3] = 0xFFFFFFC0 -64&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; NRF_PWM0-&amp;gt;MODE = 0x00000000 0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; NRF_PWM0-&amp;gt;PRESCALER = 0x00000007 7&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; NRF_PWM0-&amp;gt;DECODER = 0x00000000 0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; NRF_PWM0-&amp;gt;COUNTERTOP = 0x000061A8 25000&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; NRF_PWM0-&amp;gt;SEQ[0].PTR = 0x2000105A 536875098&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; NRF_PWM0-&amp;gt;SEQ[0].CNT = 0x0000000A 10&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; NRF_PWM0-&amp;gt;SEQ[0].REFRESH = 0x00000002 2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; NRF_PWM0-&amp;gt;SEQ[0].ENDDELAY = 0x000061A8 25000&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; NRF_PWM0-&amp;gt;LOOP = 0x00000004 4&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; NRF_PWM0-&amp;gt;ENABLE = 0x00000001 1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; PWM_SEQ&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; PWM_SEQ [ 000 ] = 0x000030D4 12500&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; PWM_SEQ [ 001 ] = 0x000030D4 12500&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; PWM_SEQ [ 002 ] = 0x000030D4 12500&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; PWM_SEQ [ 003 ] = 0x000030D4 12500&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; PWM_SEQ [ 004 ] = 0x000030D4 12500&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; PWM_SEQ [ 005 ] = 0x000030D4 12500&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; PWM_SEQ [ 006 ] = 0x000030D4 12500&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; PWM_SEQ [ 007 ] = 0x000030D4 12500&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; PWM_SEQ [ 008 ] = 0x000030D4 12500&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; PWM_SEQ [ 009 ] = 0x000030D4 12500&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; PWM_SEQ [ 010 ] = 0x000030D4 12500&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; PWM_SEQ [ 011 ] = 0x000030D4 12500&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; PWM_SEQ [ 012 ] = 0x000030D4 12500&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; PWM_SEQ [ 013 ] = 0x000030D4 12500&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; PWM_SEQ [ 014 ] = 0x000030D4 12500&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; PWM_SEQ [ 015 ] = 0x000030D4 12500&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; PWM_SEQ [ 016 ] = 0x000030D4 12500&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; PWM_SEQ [ 017 ] = 0x000030D4 12500&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; PWM_SEQ [ 018 ] = 0x000030D4 12500&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; PWM_SEQ [ 019 ] = 0x000030D4 12500&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#ff6600;font-size:150%;"&gt;&lt;strong&gt;What I got&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;LED keeps blinking about 5Hz.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;But it never stops.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Is there TIMER + GPIOTE + PPI exampe ?</title><link>https://devzone.nordicsemi.com/thread/539057?ContentTypeID=1</link><pubDate>Thu, 12 Jun 2025 13:22:37 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:c663ddb0-0f71-4bcd-9318-42fa219f5af6</guid><dc:creator>Turbo J</dc:creator><description>&lt;p&gt;You could just use a PWM peripherial for this task. Should be simple.&lt;/p&gt;
&lt;p&gt;If you used the RTC timer, you would achieve a lot less current consumtion in the off time - because the HF(int) oscillator can sleep. It can&amp;#39;t when TIMER or PWM was active.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>