<?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 can I count  pwm pulse&amp;#39;s number when it is running ?</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/85906/how-can-i-count-pwm-pulse-s-number-when-it-is-running</link><description>Hello. 
 I am just do one project with Zephyr and nrf52840 to control one step motor, the one task is to get pulse number of pwm pulse when motor is running , I think PPI May be userful and have write the below code , 
 
 .... 
 //pwm0 init and start</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Thu, 17 Mar 2022 01:52:56 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/85906/how-can-i-count-pwm-pulse-s-number-when-it-is-running" /><item><title>RE: How can I count  pwm pulse's number when it is running ?</title><link>https://devzone.nordicsemi.com/thread/358515?ContentTypeID=1</link><pubDate>Thu, 17 Mar 2022 01:52:56 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:820888d7-33b6-409d-80e7-d2a923c35596</guid><dc:creator>thomas he</dc:creator><description>&lt;p&gt;&amp;nbsp;I think the method is not the best, or the PPI with pwm can&amp;#39;t work well.&amp;nbsp; can somebody&amp;nbsp; give me suggestion to implement the function?&lt;/p&gt;
&lt;p&gt;Thanks.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How can I count  pwm pulse's number when it is running ?</title><link>https://devzone.nordicsemi.com/thread/358514?ContentTypeID=1</link><pubDate>Tue, 15 Mar 2022 07:06:12 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:7e54a68e-46da-4052-9154-2d1cc0656a3a</guid><dc:creator>thomas he</dc:creator><description>&lt;p&gt;OK， the code for pwm and timer (work as counter mode) is below:&lt;/p&gt;
&lt;p&gt;pwm = pwm_init();&lt;br /&gt; pwm_start(pwm, 10* 1000);&lt;/p&gt;
&lt;p&gt;printk(&amp;quot;Counter alarm sample\n\n&amp;quot;);&lt;br /&gt; counter_dev = device_get_binding(TIMER);&lt;br /&gt; if (counter_dev == NULL) {&lt;br /&gt; printk(&amp;quot;Device not found\n&amp;quot;);&lt;br /&gt; return;&lt;br /&gt; }&lt;/p&gt;
&lt;p&gt;counter_start(counter_dev);&lt;/p&gt;
&lt;p&gt;alarm_cfg.flags = 0;&lt;br /&gt; alarm_cfg.ticks = 10 * 1000;//counter_us_to_ticks(counter_dev, DELAY);&lt;br /&gt; alarm_cfg.callback = test_counter_interrupt_fn;&lt;br /&gt; alarm_cfg.user_data = &amp;amp;alarm_cfg;&lt;/p&gt;
&lt;p&gt;err = counter_set_channel_alarm(counter_dev, ALARM_CHANNEL_ID,&lt;br /&gt; &amp;amp;alarm_cfg);&lt;br /&gt; printk(&amp;quot;Set alarm in %u sec (%u ticks)\n&amp;quot;,&lt;br /&gt; (uint32_t)(counter_ticks_to_us(counter_dev,&lt;br /&gt; alarm_cfg.ticks) / USEC_PER_SEC),&lt;br /&gt; alarm_cfg.ticks);&lt;/p&gt;
&lt;p&gt;if (-EINVAL == err) {&lt;br /&gt; printk(&amp;quot;Alarm settings invalid\n&amp;quot;);&lt;br /&gt; } else if (-ENOTSUP == err) {&lt;br /&gt; printk(&amp;quot;Alarm setting request not supported\n&amp;quot;);&lt;br /&gt; } else if (err != 0) {&lt;br /&gt; printk(&amp;quot;Error\n&amp;quot;);&lt;br /&gt; }&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;the pwm &amp;#39;s&amp;nbsp; work frequency is 10k, and I can test it with&amp;nbsp;&amp;nbsp;oscilloscope,&amp;nbsp; it work well.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;the timer&amp;nbsp; works as counter , I have modify the timer&amp;#39;s driver code (.mode = NRF_TIMER_MODE_COUNTER,&amp;nbsp;) in&amp;nbsp;I:\nRF\ncs\zephyr\drivers\counter\counter_nrfx_timer.c temporarily.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;my prj.conf content is below:&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;CONFIG_PRINTK=y&lt;br /&gt;CONFIG_COUNTER=y&lt;br /&gt;CONFIG_GPIO=y&lt;br /&gt;CONFIG_COUNTER_TIMER0=y&lt;br /&gt;CONFIG_NRFX_PPI=y&lt;br /&gt;CONFIG_PWM=y&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;thanks.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;to add,&amp;nbsp; &amp;nbsp;&lt;span&gt;pwm_start is a wrapper of&amp;nbsp;pwm_pin_set_usec(....).&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How can I count  pwm pulse's number when it is running ?</title><link>https://devzone.nordicsemi.com/thread/358513?ContentTypeID=1</link><pubDate>Mon, 14 Mar 2022 14:43:09 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:19cbb7dc-56d4-401b-9602-4a6eb57b796b</guid><dc:creator>&amp;#216;ivind</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;Could I see how you setup the PWM and timer? And your prj.conf&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>