<?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: LPC1769 PWM help in LPCXpresso IDE</title>
    <link>https://community.nxp.com/t5/LPCXpresso-IDE/LPC1769-PWM-help/m-p/583670#M25949</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by Ex-Zero on Tue Oct 09 06:33:21 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Quote: &lt;/STRONG&gt;&lt;BR /&gt;&lt;BR /&gt;Is there a simple way to invert a PWM output on a second PWM channel?&lt;BR /&gt;&lt;/SPAN&gt;&lt;HR /&gt;&lt;SPAN&gt;Yes, use interrupts :eek:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;#1 Create s simple 1 channel PWM :)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;#2 Enable it's interrupts ;)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;#3 Switch a GPIO (or both) within PWM ISR :p&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;A sample of PWM interrupt usage is posted in:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;#15 of &lt;/SPAN&gt;&lt;A href="http://"&gt;http://knowledgebase.nxp.com/showthread.php?p=18409&lt;/A&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 16 Jun 2016 00:04:25 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-16T00:04:25Z</dc:date>
    <item>
      <title>LPC1769 PWM help</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/LPC1769-PWM-help/m-p/583669#M25948</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by bramvdpol on Tue Oct 09 03:33:53 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm using the LPC1769 to generate a PWM output with a varying dutycycle. I used the NXP PWM example as a base for this. I succeeded in doing this for channel 1. However, I need a second channel to be high when channel 1 is low, and to be low when channel 1 is high. I've tried several things, but was not able to get it to work. The best I got was to get the correct dutycycle for channel 2, but (slightly) delaying it wouldn't work.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Is there a simple way to invert a PWM output on a second PWM channel?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;PWM.C:initialize variables&lt;/SPAN&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;#include "lpc17xx.h"
#include "type.h"
#include "pwm.h"
#define ARRAYLENGTH 16
uint32_t dctest=0;//variable for choosing an integer from Array
const unsigned char dutyMod[ARRAYLENGTH] = {

&amp;nbsp;&amp;nbsp; 10,
&amp;nbsp;&amp;nbsp; 20,
&amp;nbsp;&amp;nbsp; 30,
&amp;nbsp;&amp;nbsp; 40,
&amp;nbsp;&amp;nbsp; 50,
&amp;nbsp;&amp;nbsp; 60,
&amp;nbsp;&amp;nbsp; 70,
&amp;nbsp;&amp;nbsp; 80,
&amp;nbsp;&amp;nbsp; 90,
&amp;nbsp;&amp;nbsp; 80,
&amp;nbsp;&amp;nbsp; 70,
&amp;nbsp;&amp;nbsp; 60,
&amp;nbsp;&amp;nbsp; 50,
&amp;nbsp;&amp;nbsp; 40,
&amp;nbsp;&amp;nbsp; 30,
&amp;nbsp;&amp;nbsp; 20,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;PWM.c: PWM_Set&lt;/SPAN&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
void PWM_Set( uint32_t ChannelNum, uint32_t cycle, uint32_t offset )
{
&amp;nbsp; if ( ChannelNum == 1 )
&amp;nbsp; {
LPC_PWM1-&amp;gt;MR0 = cycle;/* set PWM cycle */
LPC_PWM1-&amp;gt;MR1 = cycle * 1/2;
LPC_PWM1-&amp;gt;MR2 = cycle * 1/2;
LPC_PWM1-&amp;gt;MR3 = cycle * dutyMod[dctest]/100;//channel one
LPC_PWM1-&amp;gt;MR4 = cycle * 1/2;
LPC_PWM1-&amp;gt;MR5 = cycle - (cycle * dutyMod[dctest]/100);//channel two
LPC_PWM1-&amp;gt;MR6 = cycle * 1/2;

dctest++;//get next value from lookup table
if(dctest==(ARRAYLENGTH-1)){dctest=0;}//jump to first value if&amp;nbsp; final value found

/* The LER will be cleared when the Match 0 takes place, in order to
load and execute the new value of match registers, all the PWMLERs need to
reloaded. all PWM latch enabled */
LPC_PWM1-&amp;gt;LER = LER0_EN | LER1_EN | LER2_EN | LER3_EN | LER4_EN | LER5_EN | LER6_EN;
&amp;nbsp; }
&amp;nbsp; return;
}
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;PWMtest.c: Main&lt;/SPAN&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
int main (void)
{&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp; uint32_t cycle = PWM_CYCLE, offset = 0;

&amp;nbsp; /* SystemClockUpdate() updates the SystemFrequency variable */
&amp;nbsp; SystemClockUpdate();
 
&amp;nbsp; if ( PWM_Init( CHANNEL_NUM, 0 ) != TRUE )
&amp;nbsp; {
while( 1 );/* fatal error */
&amp;nbsp; }

&amp;nbsp; PWM_Set( CHANNEL_NUM, cycle, offset );
&amp;nbsp; PWM_Start( CHANNEL_NUM );

&amp;nbsp; while ( 1 )
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
if ( match_counter1 != 0 )
{
&amp;nbsp; match_counter1 = 0;
&amp;nbsp; PWM_Set( CHANNEL_NUM, cycle, offset );
}
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
}
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jun 2016 00:04:24 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/LPC1769-PWM-help/m-p/583669#M25948</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-16T00:04:24Z</dc:date>
    </item>
    <item>
      <title>Re: LPC1769 PWM help</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/LPC1769-PWM-help/m-p/583670#M25949</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by Ex-Zero on Tue Oct 09 06:33:21 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Quote: &lt;/STRONG&gt;&lt;BR /&gt;&lt;BR /&gt;Is there a simple way to invert a PWM output on a second PWM channel?&lt;BR /&gt;&lt;/SPAN&gt;&lt;HR /&gt;&lt;SPAN&gt;Yes, use interrupts :eek:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;#1 Create s simple 1 channel PWM :)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;#2 Enable it's interrupts ;)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;#3 Switch a GPIO (or both) within PWM ISR :p&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;A sample of PWM interrupt usage is posted in:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;#15 of &lt;/SPAN&gt;&lt;A href="http://"&gt;http://knowledgebase.nxp.com/showthread.php?p=18409&lt;/A&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jun 2016 00:04:25 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/LPC1769-PWM-help/m-p/583670#M25949</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-16T00:04:25Z</dc:date>
    </item>
  </channel>
</rss>

