<?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>topic Re: KV46F256 PWM Module Problem in Kinetis Microcontrollers</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/KV46F256-PWM-Module-Problem/m-p/1348261#M61594</link>
    <description>&lt;P&gt;any rounding off problems with your statement?&amp;nbsp;&lt;BR /&gt;is the deadtime calculated below as sometime you want?&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;"deadTimeVal = ((uint64_t)CLOCK_SYS_GetPwmFreq(0) * 20000) per 1000000000"&lt;/P&gt;</description>
    <pubDate>Wed, 29 Sep 2021 09:37:50 GMT</pubDate>
    <dc:creator>D4Worker</dc:creator>
    <dc:date>2021-09-29T09:37:50Z</dc:date>
    <item>
      <title>KV46F256 PWM Module Problem</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/KV46F256-PWM-Module-Problem/m-p/731608#M44738</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi all;&lt;/P&gt;&lt;P&gt;I'm using KV46F256VLL16 for motor control application. But i have very bad problem with PWM module.&lt;/P&gt;&lt;P&gt;Before testing my application, i create basic sinusoidal pwm with Pulse Width Modulator A (PWMA/eFlexPWM). But when duty cycle near 50%, duty pulse getting worse. I put some pictures below from &lt;SPAN class="" lang="en"&gt;&lt;SPAN class=""&gt;oscilloscope&lt;/SPAN&gt;&lt;/SPAN&gt; screen. &lt;SPAN class="" lang="en"&gt;&lt;SPAN class=""&gt;Corruption&lt;/SPAN&gt;&lt;/SPAN&gt; isn't same everytime.&lt;/P&gt;&lt;P&gt;My board is TWR-KV46F150M and i'm using portD pins for PWM module.&lt;/P&gt;&lt;P&gt;My pwm module settings is below also. I'm using MQX 5.0.2 HAL and Driver libraries.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint16_t deadTimeVal;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PWM_Type *pwmBase = g_pwmBase[instance];&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pwm_module_setup_t moduleParams;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; moduleParams.clkSrc &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;= kClkSrcPwmIPBusClk;&amp;nbsp; /* Use IP Bus clock as source */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; moduleParams.prescale &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;= kPwmDividedBy2;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; moduleParams.cntrInitSel &amp;nbsp;&amp;nbsp; &amp;nbsp;= kInitSrcMasterSync;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; moduleParams.reloadLogic &amp;nbsp;&amp;nbsp; &amp;nbsp;= kFlexPwmReloadPwmFullCycle;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; moduleParams.reloadFreq &amp;nbsp;&amp;nbsp; &amp;nbsp;= kPwmLoadEvery1Oportunity;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; moduleParams.chnlPairOper &amp;nbsp;&amp;nbsp; &amp;nbsp;= kFlexPwmIndependent; //kFlexPwmComplementaryPwmA;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; moduleParams.forceTrig &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;= kForceOutputLocalForce;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; signalParams.pwmPeriod &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;= 1000;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; signalParams.pwmType &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;= kFlexPwmEdgeAligned;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; signalParams.pwmAPulseWidth = 1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; signalParams.pwmBPulseWidth = 999;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; signalParams.pwmAPolarity &amp;nbsp;&amp;nbsp; &amp;nbsp;= false;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; signalParams.pwmBPolarity &amp;nbsp;&amp;nbsp; &amp;nbsp;= false;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*********** PWMA_SM0 - phase A, configuration ************/&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PWM_DRV_SetupPwm(instance, kFlexPwmModule0, &amp;amp;moduleParams, &amp;amp;signalParams);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Set deadtime count, we set this to about 650ns */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; deadTimeVal = ((uint64_t)CLOCK_SYS_GetPwmFreq(0) * 20000) / 1000000000;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PWM_WR_DTCNT0(pwmBase, kFlexPwmModule0, deadTimeVal);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PWM_WR_DTCNT1(pwmBase, kFlexPwmModule0, deadTimeVal);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And my while rutine has this code :&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;signalParams.pwmAPulseWidth = duty_arr[pwmVal]; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; PWM_DRV_UpdatePwmSignal(0, kFlexPwmModule0, &amp;amp;signalParams);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//const unsigned int duty_arr[90] = { ...} there is duty values between 0 to 1000 for sinus signal. values taken from Matlab.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 08 Feb 2018 15:05:44 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/KV46F256-PWM-Module-Problem/m-p/731608#M44738</guid>
      <dc:creator>i_smailtatlınar</dc:creator>
      <dc:date>2018-02-08T15:05:44Z</dc:date>
    </item>
    <item>
      <title>Re: KV46F256 PWM Module Problem</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/KV46F256-PWM-Module-Problem/m-p/731609#M44739</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, Ismail,&lt;/P&gt;&lt;P&gt;The figure you gave is strange, the PWM signals disorder, I suppose that the synchronization has issue. Pls change the setting:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; moduleParams.clkSrc &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;= kClkSrcPwmIPBusClk;&amp;nbsp; /* Use IP Bus clock as source */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; moduleParams.prescale &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;= kPwmDividedBy2;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; moduleParams.cntrInitSel &amp;nbsp;&amp;nbsp; &amp;nbsp;= kInitSrcMasterSync;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; moduleParams.reloadLogic &amp;nbsp;&amp;nbsp; &amp;nbsp;= kFlexPwmReloadPwmFullCycle;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; moduleParams.reloadFreq &amp;nbsp;&amp;nbsp; &amp;nbsp;= kPwmLoadEvery1Oportunity;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; moduleParams.chnlPairOper &amp;nbsp;&amp;nbsp; &amp;nbsp;= kFlexPwmIndependent; //kFlexPwmComplementaryPwmA;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; moduleParams.forceTrig &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;= kForceOutputLocalForce;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TO&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; moduleParams.clkSrc &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;= kClkSrcPwmIPBusClk;&amp;nbsp; /* Use IP Bus clock as source */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; moduleParams.prescale &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;= kPwmDividedBy2;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; moduleParams.cntrInitSel &amp;nbsp;&amp;nbsp; &amp;nbsp;= &amp;nbsp;kInitSrcLocalSync;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; moduleParams.reloadLogic &amp;nbsp;&amp;nbsp; &amp;nbsp;= kFlexPwmReloadPwmFullCycle;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; moduleParams.reloadFreq &amp;nbsp;&amp;nbsp; &amp;nbsp;= kPwmLoadEvery1Oportunity;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; moduleParams.chnlPairOper &amp;nbsp;&amp;nbsp; &amp;nbsp;= kFlexPwmIndependent; //kFlexPwmComplementaryPwmA;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; moduleParams.forceTrig &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;= kForceOutputLocalForce;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Because you use SM0, you have to select the &amp;nbsp;kInitSrcLocalSync. if you select the other module except for SM0 for example SM1, SM2, SM3, you are right to select kInitSrcMasterSync for moduleParams.cntrInitSel .&lt;/P&gt;&lt;P&gt;For detailed inf, pls refer to INIT_SEL bits in PWMA_SMnCTRL2 register in RM of KV4x.&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;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 11 Feb 2018 02:59:45 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/KV46F256-PWM-Module-Problem/m-p/731609#M44739</guid>
      <dc:creator>xiangjun_rong</dc:creator>
      <dc:date>2018-02-11T02:59:45Z</dc:date>
    </item>
    <item>
      <title>Re: KV46F256 PWM Module Problem</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/KV46F256-PWM-Module-Problem/m-p/1348261#M61594</link>
      <description>&lt;P&gt;any rounding off problems with your statement?&amp;nbsp;&lt;BR /&gt;is the deadtime calculated below as sometime you want?&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;"deadTimeVal = ((uint64_t)CLOCK_SYS_GetPwmFreq(0) * 20000) per 1000000000"&lt;/P&gt;</description>
      <pubDate>Wed, 29 Sep 2021 09:37:50 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/KV46F256-PWM-Module-Problem/m-p/1348261#M61594</guid>
      <dc:creator>D4Worker</dc:creator>
      <dc:date>2021-09-29T09:37:50Z</dc:date>
    </item>
  </channel>
</rss>

