<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>LPC MicrocontrollersのトピックRe: SCTimer LPC845 shorts peaks when Duty is 0%</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/SCTimer-LPC845-shorts-peaks-when-Duty-is-0/m-p/1801654#M55338</link>
    <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;I have checked your code, you use match0 register as limit to set up the period of the PWM signal. The Match0/match1 registers are used to generate event0/event1 to set/clear the OUT0 signal.&lt;/P&gt;
&lt;P&gt;If you want to get the zero duty cycle, which means that you want to get a LOW logic in the intact PWM cycle. You want to get zero duty cycle and set the match1 reg to zero, which generates event 1 and clear the OUT0 signal, so the event1 will happen, the spike is doomed to happen, this is SCTimer mechanism drawback.&lt;/P&gt;
&lt;P&gt;If you want to get 0% or 100% duty cycle, I suppose that this is a workaround, you can set the pin as GPIO pin and output 0. In detail, if it is a SWM output pin, you can set the SWM register bits as 0xFF, and set the pin as GPIO output mode and output 0. I suppose that 100% duty cycle also has issue, you can also set the Pin as GPIO output mode and output 1 logic. In order to keep the PWM intact cycle, you can have event0&amp;nbsp; generate interrupt, in the ISR, configure the pin as GPIO output. If you want to output PWM signal with duty cycle ranging from 1% to 99%, in the ISR, set up SWM to output PWM signal&lt;/P&gt;
&lt;P&gt;Hope it can help you&lt;/P&gt;
&lt;P&gt;BR&lt;/P&gt;
&lt;P&gt;XiangJun Rong&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Mon, 05 Feb 2024 06:27:54 GMT</pubDate>
    <dc:creator>xiangjun_rong</dc:creator>
    <dc:date>2024-02-05T06:27:54Z</dc:date>
    <item>
      <title>SCTimer LPC845 shorts peaks when Duty is 0%</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/SCTimer-LPC845-shorts-peaks-when-Duty-is-0/m-p/1801456#M55334</link>
      <description>&lt;P&gt;Hi everyone!&lt;BR /&gt;I'm using SCTimer in LPC845 to generate a PWM signal. The behaviour is very good and very stable, but when I set the duty to 0% I see short peaks (~40ns) in the output. It's very important for my design that those spikes are not present at the output (deformation of the signal result). Of course, if I perform the PWM manually via ctimer I haven't the spikes because I have full control of the shape, but my idea is to use the HW PWM from SCTimer for all reasons and advantages it has.&amp;nbsp; Surely I'm doing something wrong.&lt;BR /&gt;I want to use two outputs, when one of them is making the PWM the other one has to put 0 at the output (or depending the Duty activity that I choose configure to use). This is my initialization:&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;P&gt;&lt;SPAN&gt;void&lt;/SPAN&gt; &lt;SPAN&gt;Inicializar_SCTimer&lt;/SPAN&gt;&lt;SPAN&gt;( &lt;/SPAN&gt;&lt;SPAN&gt;void&lt;/SPAN&gt;&lt;SPAN&gt; )&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;SYSCON-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;SYSAHBCLKCTRL0&lt;/SPAN&gt;&lt;SPAN&gt; |= (1 &amp;lt;&amp;lt; 7) | (1 &amp;lt;&amp;lt; 8); &lt;/SPAN&gt;&lt;SPAN&gt;// 8= SCTIMER 7=SWM&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;SYSCON-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;PRESETCTRL0&lt;/SPAN&gt;&lt;SPAN&gt; |= (1 &amp;lt;&amp;lt; 8); &lt;/SPAN&gt;&lt;SPAN&gt;// 8= SCTIMER clear the timer reset&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;SYSCON-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;SCTCLKSEL&lt;/SPAN&gt;&lt;SPAN&gt; = 1; &lt;/SPAN&gt;&lt;SPAN&gt;// 1:Main clock 24MHz&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;SYSCON-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;SCTCLKDIV&lt;/SPAN&gt;&lt;SPAN&gt; = 1; &lt;/SPAN&gt;&lt;SPAN&gt;// divided by n&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;SWM0-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;PINASSIGN&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;PINASSIGN7&lt;/SPAN&gt;&lt;SPAN&gt; &amp;amp;= (~(0xff &amp;lt;&amp;lt; (24))); &lt;/SPAN&gt;&lt;SPAN&gt;// SCT_OUT0 = PWM PIO0.8 -&amp;gt; pin 21&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;SWM0-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;PINASSIGN&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;PINASSIGN7&lt;/SPAN&gt;&lt;SPAN&gt; |= (8 &amp;lt;&amp;lt; (24));&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;SWM0-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;PINASSIGN&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;PINASSIGN8&lt;/SPAN&gt;&lt;SPAN&gt; &amp;amp;= (~(0xff &amp;lt;&amp;lt; (0))); &lt;/SPAN&gt;&lt;SPAN&gt;// SCT_OUT1 = PWM PIO0.9&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;SWM0-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;PINASSIGN&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;PINASSIGN8&lt;/SPAN&gt;&lt;SPAN&gt; |= (9 &amp;lt;&amp;lt; (0)); &lt;/SPAN&gt;&lt;SPAN&gt;// PIO0.9 OUT1 -&amp;gt; pin 22&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;SCT0-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;CONFIG&lt;/SPAN&gt;&lt;SPAN&gt; |= (1 &amp;lt;&amp;lt; 0) | (1 &amp;lt;&amp;lt; 17);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;SCT0-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;SCTMATCH&lt;/SPAN&gt;&lt;SPAN&gt;[0] = FREQ_PRINCIPAL/(PWM_FREQ*1);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;SCT0-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;SCTMATCHREL&lt;/SPAN&gt;&lt;SPAN&gt;[0] = FREQ_PRINCIPAL/(PWM_FREQ*1);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;SCT0-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;EVENT&lt;/SPAN&gt;&lt;SPAN&gt;[0].&lt;/SPAN&gt;&lt;SPAN&gt;STATE&lt;/SPAN&gt;&lt;SPAN&gt; = 0xFFFFFFFF;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;SCT0-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;EVENT&lt;/SPAN&gt;&lt;SPAN&gt;[0].&lt;/SPAN&gt;&lt;SPAN&gt;CTRL&lt;/SPAN&gt;&lt;SPAN&gt; = 0 | (1 &amp;lt;&amp;lt; 12);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;SCT0-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;OUTPUT&lt;/SPAN&gt;&lt;SPAN&gt; = 0xC; &lt;/SPAN&gt;&lt;SPAN&gt;//&lt;/SPAN&gt;&lt;SPAN&gt;Esto&lt;/SPAN&gt;&lt;SPAN&gt; no &lt;/SPAN&gt;&lt;SPAN&gt;tiene&lt;/SPAN&gt; &lt;SPAN&gt;efecto&lt;/SPAN&gt; &lt;SPAN&gt;luego&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;SCT0-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;RES&lt;/SPAN&gt;&lt;SPAN&gt; = 0b01010101; &lt;/SPAN&gt;&lt;SPAN&gt;//&lt;/SPAN&gt;&lt;SPAN&gt;Habría&lt;/SPAN&gt; &lt;SPAN&gt;que&lt;/SPAN&gt; &lt;SPAN&gt;hacer&lt;/SPAN&gt; &lt;SPAN&gt;pruebas&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;SCT0-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;EVEN&lt;/SPAN&gt;&lt;SPAN&gt; = 1;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;//SCT0-&amp;gt;EVEN = 3;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;SCT0-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;EVENT&lt;/SPAN&gt;&lt;SPAN&gt;[1].&lt;/SPAN&gt;&lt;SPAN&gt;STATE&lt;/SPAN&gt;&lt;SPAN&gt; = 0xFFFFFFFF;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;SCT0-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;EVENT&lt;/SPAN&gt;&lt;SPAN&gt;[1].&lt;/SPAN&gt;&lt;SPAN&gt;CTRL&lt;/SPAN&gt;&lt;SPAN&gt; = 1 | (1 &amp;lt;&amp;lt; 12); &lt;/SPAN&gt;&lt;SPAN&gt;//&lt;/SPAN&gt;&lt;SPAN&gt;Referido&lt;/SPAN&gt;&lt;SPAN&gt; a Match1 &lt;/SPAN&gt;&lt;SPAN&gt;Combmode&lt;/SPAN&gt;&lt;SPAN&gt; 1== Match only&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;#ifdef&lt;/SPAN&gt;&lt;SPAN&gt; DUTYaCTIVOaLTO&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;SCT0-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;OUT&lt;/SPAN&gt;&lt;SPAN&gt;[0].&lt;/SPAN&gt;&lt;SPAN&gt;SET&lt;/SPAN&gt;&lt;SPAN&gt; = 1;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;SCT0-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;OUT&lt;/SPAN&gt;&lt;SPAN&gt;[0].&lt;/SPAN&gt;&lt;SPAN&gt;CLR&lt;/SPAN&gt;&lt;SPAN&gt; = (1&amp;lt;&amp;lt;1);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;#else&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;SCT0-&amp;gt;OUT[0].SET = (1&amp;lt;&amp;lt;1);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;SCT0-&amp;gt;OUT[0].CLR = 1;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;#endif&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;SCT0-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;SCTMATCH&lt;/SPAN&gt;&lt;SPAN&gt;[1] = 0; &lt;/SPAN&gt;&lt;SPAN&gt;//Duty pwm1&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;SCT0-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;SCTMATCHREL&lt;/SPAN&gt;&lt;SPAN&gt;[1] = 0; &lt;/SPAN&gt;&lt;SPAN&gt;//Duty pwm1&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;//-------------------------------------------&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;SCT0-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;SCTMATCH&lt;/SPAN&gt;&lt;SPAN&gt;[2] = FREQ_PRINCIPAL/(PWM_FREQ*1);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;SCT0-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;SCTMATCHREL&lt;/SPAN&gt;&lt;SPAN&gt;[2] = FREQ_PRINCIPAL/(PWM_FREQ*1);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;SCT0-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;EVENT&lt;/SPAN&gt;&lt;SPAN&gt;[2].&lt;/SPAN&gt;&lt;SPAN&gt;STATE&lt;/SPAN&gt;&lt;SPAN&gt; = 0xFFFFFFFF;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;SCT0-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;EVENT&lt;/SPAN&gt;&lt;SPAN&gt;[2].&lt;/SPAN&gt;&lt;SPAN&gt;CTRL&lt;/SPAN&gt;&lt;SPAN&gt; = 2 | (1 &amp;lt;&amp;lt; 12);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;SCT0-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;EVENT&lt;/SPAN&gt;&lt;SPAN&gt;[3].&lt;/SPAN&gt;&lt;SPAN&gt;STATE&lt;/SPAN&gt;&lt;SPAN&gt; = 0xFFFFFFFF;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;SCT0-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;EVENT&lt;/SPAN&gt;&lt;SPAN&gt;[3].&lt;/SPAN&gt;&lt;SPAN&gt;CTRL&lt;/SPAN&gt;&lt;SPAN&gt; = 3 | (1 &amp;lt;&amp;lt; 12); &lt;/SPAN&gt;&lt;SPAN&gt;//&lt;/SPAN&gt;&lt;SPAN&gt;Referido&lt;/SPAN&gt;&lt;SPAN&gt; a Match3 &lt;/SPAN&gt;&lt;SPAN&gt;Combmode&lt;/SPAN&gt;&lt;SPAN&gt; 1== Match only&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;#ifdef&lt;/SPAN&gt;&lt;SPAN&gt; DUTYaCTIVOaLTO&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;SCT0-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;OUT&lt;/SPAN&gt;&lt;SPAN&gt;[1].&lt;/SPAN&gt;&lt;SPAN&gt;SET&lt;/SPAN&gt;&lt;SPAN&gt; = (1&amp;lt;&amp;lt;2); &lt;/SPAN&gt;&lt;SPAN&gt;//&lt;/SPAN&gt;&lt;SPAN&gt;Actua&lt;/SPAN&gt; &lt;SPAN&gt;en&lt;/SPAN&gt;&lt;SPAN&gt; base a evento2&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;SCT0-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;OUT&lt;/SPAN&gt;&lt;SPAN&gt;[1].&lt;/SPAN&gt;&lt;SPAN&gt;CLR&lt;/SPAN&gt;&lt;SPAN&gt; = (1&amp;lt;&amp;lt;3); &lt;/SPAN&gt;&lt;SPAN&gt;//&lt;/SPAN&gt;&lt;SPAN&gt;Actua&lt;/SPAN&gt; &lt;SPAN&gt;en&lt;/SPAN&gt;&lt;SPAN&gt; base a evento3&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;#else&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;SCT0-&amp;gt;OUT[1].SET = (1&amp;lt;&amp;lt;3); &lt;/SPAN&gt;&lt;SPAN&gt;//&lt;/SPAN&gt;&lt;SPAN&gt;Actua&lt;/SPAN&gt; &lt;SPAN&gt;en&lt;/SPAN&gt;&lt;SPAN&gt; base a evento3&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;SCT0-&amp;gt;OUT[1].CLR = (1&amp;lt;&amp;lt;2); &lt;/SPAN&gt;&lt;SPAN&gt;//&lt;/SPAN&gt;&lt;SPAN&gt;Actua&lt;/SPAN&gt; &lt;SPAN&gt;en&lt;/SPAN&gt;&lt;SPAN&gt; base a evento2&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;#endif&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;SCT0-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;SCTMATCH&lt;/SPAN&gt;&lt;SPAN&gt;[3] = 0; &lt;/SPAN&gt;&lt;SPAN&gt;//Duty pwm2&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;SCT0-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;SCTMATCHREL&lt;/SPAN&gt;&lt;SPAN&gt;[3] = 0; &lt;/SPAN&gt;&lt;SPAN&gt;//Duty pwm2&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;NVIC-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;ISER&lt;/SPAN&gt;&lt;SPAN&gt;[0] = (1 &amp;lt;&amp;lt; 9);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;SCT0-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;CTRL&lt;/SPAN&gt;&lt;SPAN&gt; &amp;amp;= ~(1 &amp;lt;&amp;lt; 2); &lt;/SPAN&gt;&lt;SPAN&gt;//Start SCTimer&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;PWM1_set( 65 ); &lt;/SPAN&gt;&lt;SPAN&gt;//6.5%&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;PWM2_set( 90 ); &lt;/SPAN&gt;&lt;SPAN&gt;//9%&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;PWM1_set is from AN (with my changes), only the first if has relevance when the duty is 0:&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;P&gt;&lt;SPAN&gt;void&lt;/SPAN&gt; &lt;SPAN&gt;PWM1_set&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;uint32_t&lt;/SPAN&gt;&lt;SPAN&gt; value)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;if&lt;/SPAN&gt;&lt;SPAN&gt; (value == 0)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;SCT0-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;SCTMATCHREL&lt;/SPAN&gt;&lt;SPAN&gt;[1] = 0; &lt;/SPAN&gt;&lt;SPAN&gt;// check &lt;/SPAN&gt;&lt;SPAN&gt;val&lt;/SPAN&gt;&lt;SPAN&gt; between 0% and 100%&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;else&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;if&lt;/SPAN&gt;&lt;SPAN&gt; ( value &amp;gt;= CINCOpORCIENTO &amp;amp;&amp;amp; value &amp;lt;= DIEZpORCIENTO)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;SCT0-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;SCTMATCHREL&lt;/SPAN&gt;&lt;SPAN&gt;[1] = (value*DOScOMAcINCOmILIS)/DOCEcOMACINCOpORCIENTO;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;else&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;SCT0-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;SCTMATCHREL&lt;/SPAN&gt;&lt;SPAN&gt;[1] = FREQ_PRINCIPAL/(PWM_FREQ*1 - 1); &lt;/SPAN&gt;&lt;SPAN&gt;// set to 100% duty cycle&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;The attached images shows the behaviour.&lt;BR /&gt;Any help would be appreciated!&lt;BR /&gt;BR&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Mariano&lt;/SPAN&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Sun, 04 Feb 2024 21:19:27 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/SCTimer-LPC845-shorts-peaks-when-Duty-is-0/m-p/1801456#M55334</guid>
      <dc:creator>marianovedovato</dc:creator>
      <dc:date>2024-02-04T21:19:27Z</dc:date>
    </item>
    <item>
      <title>Re: SCTimer LPC845 shorts peaks when Duty is 0%</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/SCTimer-LPC845-shorts-peaks-when-Duty-is-0/m-p/1801654#M55338</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;I have checked your code, you use match0 register as limit to set up the period of the PWM signal. The Match0/match1 registers are used to generate event0/event1 to set/clear the OUT0 signal.&lt;/P&gt;
&lt;P&gt;If you want to get the zero duty cycle, which means that you want to get a LOW logic in the intact PWM cycle. You want to get zero duty cycle and set the match1 reg to zero, which generates event 1 and clear the OUT0 signal, so the event1 will happen, the spike is doomed to happen, this is SCTimer mechanism drawback.&lt;/P&gt;
&lt;P&gt;If you want to get 0% or 100% duty cycle, I suppose that this is a workaround, you can set the pin as GPIO pin and output 0. In detail, if it is a SWM output pin, you can set the SWM register bits as 0xFF, and set the pin as GPIO output mode and output 0. I suppose that 100% duty cycle also has issue, you can also set the Pin as GPIO output mode and output 1 logic. In order to keep the PWM intact cycle, you can have event0&amp;nbsp; generate interrupt, in the ISR, configure the pin as GPIO output. If you want to output PWM signal with duty cycle ranging from 1% to 99%, in the ISR, set up SWM to output PWM signal&lt;/P&gt;
&lt;P&gt;Hope it can help you&lt;/P&gt;
&lt;P&gt;BR&lt;/P&gt;
&lt;P&gt;XiangJun Rong&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 05 Feb 2024 06:27:54 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/SCTimer-LPC845-shorts-peaks-when-Duty-is-0/m-p/1801654#M55338</guid>
      <dc:creator>xiangjun_rong</dc:creator>
      <dc:date>2024-02-05T06:27:54Z</dc:date>
    </item>
    <item>
      <title>Re: SCTimer LPC845 shorts peaks when Duty is 0%</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/SCTimer-LPC845-shorts-peaks-when-Duty-is-0/m-p/1801881#M55344</link>
      <description>&lt;P&gt;Hi Rong, thank you for your reply.&amp;nbsp;&lt;/P&gt;&lt;P&gt;I assumed the problem came from that side, in fact my manually PWM check for Duty 0% or 100% and in those particular cases I change the behaviour of the output.&lt;BR /&gt;So, you think that the AN1138&amp;nbsp; in the chapter&amp;nbsp;"20. PWM with 0 - 100% duty cycle"&amp;nbsp; is a solution?&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;I see slighty different initialization (uses MATCH0.L that I believe I haven't see in my lpc845.h) but I'll try to implement.&lt;/P&gt;&lt;P&gt;Thank you&lt;/P&gt;&lt;P&gt;BR&lt;/P&gt;&lt;P&gt;Mariano&lt;/P&gt;</description>
      <pubDate>Mon, 05 Feb 2024 12:35:27 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/SCTimer-LPC845-shorts-peaks-when-Duty-is-0/m-p/1801881#M55344</guid>
      <dc:creator>marianovedovato</dc:creator>
      <dc:date>2024-02-05T12:35:27Z</dc:date>
    </item>
    <item>
      <title>Re: SCTimer LPC845 shorts peaks when Duty is 0%</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/SCTimer-LPC845-shorts-peaks-when-Duty-is-0/m-p/1802243#M55349</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;I think you mean AN11538.pdf, it is a cook book about the SCTimer, a very good AN.&lt;/P&gt;&lt;P&gt;For the 0% and 100% duty cycle, it is special case. If you set the match1 zero, I suppose that an event still happens because counter increase from zero, so the spike is inevitable.&lt;/P&gt;&lt;P&gt;Hope it can help you&lt;/P&gt;&lt;P&gt;BR&lt;/P&gt;&lt;P&gt;XiangJun Rong&lt;/P&gt;</description>
      <pubDate>Tue, 06 Feb 2024 02:26:01 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/SCTimer-LPC845-shorts-peaks-when-Duty-is-0/m-p/1802243#M55349</guid>
      <dc:creator>xiangjun_rong</dc:creator>
      <dc:date>2024-02-06T02:26:01Z</dc:date>
    </item>
    <item>
      <title>Re: SCTimer LPC845 shorts peaks when Duty is 0%</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/SCTimer-LPC845-shorts-peaks-when-Duty-is-0/m-p/1803587#M55371</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;Yes, that one.&lt;/P&gt;&lt;P&gt;I agree, it's very good AN but in my opinion it is not correct that chapter 20 be titled "PWM with 0 - 100% duty cycle" when the actual behavior is not exactly 0%.&lt;BR /&gt;I saw your similar response for other similar cases, so I'm sorry for ask something that doesn't has solution (elegant).&lt;/P&gt;&lt;P&gt;By the way, the example in the same AN11538 "Center aligned PWM" seems to works fine in 0%, I tested with only one output and it's OK. When I add the second Output, doesn't works anymore. I have to continue investigating.&lt;/P&gt;&lt;P&gt;Thank you so much for your help.&lt;/P&gt;&lt;P&gt;Mariano&lt;/P&gt;</description>
      <pubDate>Wed, 07 Feb 2024 18:18:42 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/SCTimer-LPC845-shorts-peaks-when-Duty-is-0/m-p/1803587#M55371</guid>
      <dc:creator>marianovedovato</dc:creator>
      <dc:date>2024-02-07T18:18:42Z</dc:date>
    </item>
  </channel>
</rss>

