<?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のトピックInvert Timer output</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/Invert-Timer-output/m-p/535152#M10952</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by rickta59 on Fri May 10 16:33:44 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;P&gt;I'm trying to figure out how to use the timers properly. I using something like the following code to end up with a 20msec period with a 1msec duty. Typical of what you might find with an analog servo. I can't figure out how to invert the signal without using hardware or writing an my own interrupt handler to toggle gpio pins. Is it possible using PWM to have the timer start high and then go low when the match is reached?&lt;/P&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // enable clock to 16bit timers (3.5.14)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_SYSCON-&amp;gt;SYSAHBCLKCTRL |= (1 &amp;lt;&amp;lt; 7);&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_IOCON-&amp;gt;PIO0_8 |= (1&amp;lt;&amp;lt;1);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // output MR0&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_TMR16B0-&amp;gt;PR = (F_CPU/1000000)-1; // set prescaler to 1 us&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_TMR16B0-&amp;gt;MR3 = 20000;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 20msec&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_TMR16B0-&amp;gt;MR0 = 1000;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 1msdc&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // use MR3 for period, use MR0, MR1 as the duty cycle&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_TMR16B0-&amp;gt;MCR |= (0x01 &amp;lt;&amp;lt; 10);&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // enable PWM for MAT0, MAT1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_TMR16B0-&amp;gt;PWMC |= 0b11;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // enable pwm P0.8/P0.9&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NVIC_EnableIRQ(TIMER_16_0_IRQn);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_TMR16B0-&amp;gt;TCR = 0x1;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;lt;/code&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;lt;/pre&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;P&gt;The code above does what I want, except it starts low and goes high on the match. I realize I could use 19000 for the match and then have it go high for the last 1msec, however that doesn't start at the beginning of the period.&lt;/P&gt;&lt;BR /&gt;&lt;P&gt;I've searched for sample servo code but didn't find anything.&lt;/P&gt;&lt;BR /&gt;&lt;P&gt;-rick&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 19:35:00 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T19:35:00Z</dc:date>
    <item>
      <title>Invert Timer output</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Invert-Timer-output/m-p/535152#M10952</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by rickta59 on Fri May 10 16:33:44 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;P&gt;I'm trying to figure out how to use the timers properly. I using something like the following code to end up with a 20msec period with a 1msec duty. Typical of what you might find with an analog servo. I can't figure out how to invert the signal without using hardware or writing an my own interrupt handler to toggle gpio pins. Is it possible using PWM to have the timer start high and then go low when the match is reached?&lt;/P&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // enable clock to 16bit timers (3.5.14)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_SYSCON-&amp;gt;SYSAHBCLKCTRL |= (1 &amp;lt;&amp;lt; 7);&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_IOCON-&amp;gt;PIO0_8 |= (1&amp;lt;&amp;lt;1);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // output MR0&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_TMR16B0-&amp;gt;PR = (F_CPU/1000000)-1; // set prescaler to 1 us&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_TMR16B0-&amp;gt;MR3 = 20000;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 20msec&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_TMR16B0-&amp;gt;MR0 = 1000;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 1msdc&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // use MR3 for period, use MR0, MR1 as the duty cycle&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_TMR16B0-&amp;gt;MCR |= (0x01 &amp;lt;&amp;lt; 10);&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // enable PWM for MAT0, MAT1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_TMR16B0-&amp;gt;PWMC |= 0b11;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // enable pwm P0.8/P0.9&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NVIC_EnableIRQ(TIMER_16_0_IRQn);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_TMR16B0-&amp;gt;TCR = 0x1;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;lt;/code&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;lt;/pre&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;P&gt;The code above does what I want, except it starts low and goes high on the match. I realize I could use 19000 for the match and then have it go high for the last 1msec, however that doesn't start at the beginning of the period.&lt;/P&gt;&lt;BR /&gt;&lt;P&gt;I've searched for sample servo code but didn't find anything.&lt;/P&gt;&lt;BR /&gt;&lt;P&gt;-rick&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 19:35:00 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Invert-Timer-output/m-p/535152#M10952</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T19:35:00Z</dc:date>
    </item>
    <item>
      <title>Re: Invert Timer output</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Invert-Timer-output/m-p/535153#M10953</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by rickta59 on Mon May 13 05:48:13 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;P&gt;Well it doesn't seem like there are any software answers to this. To solve this problem I'm going to use a SN74HC04N. This solves the inverted signal problem and an added bonus is that it brings the signal level up to 5volts and makes the servo happy.&lt;/P&gt;&lt;BR /&gt;&lt;P&gt;-rick&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 19:35:00 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Invert-Timer-output/m-p/535153#M10953</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T19:35:00Z</dc:date>
    </item>
  </channel>
</rss>

