<?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>S12 / MagniV MicrocontrollersのトピックMicrosecond Timer for HC9S12E128, 3 problems</title>
    <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Microsecond-Timer-for-HC9S12E128-3-problems/m-p/137046#M2482</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt; &lt;/DIV&gt;&lt;DIV&gt;I need to accurately wait or measure small periods of time, say 20us +- error of 5us&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="color: #FF6633; font-family: 'Courier New';"&gt;MyTimer_Reset();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="color: #FF6633; font-family: 'Courier New';"&gt;:&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="color: #FF6633; font-family: 'Courier New';"&gt;x = MyTimer_GetElapsed_us();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;once&amp;nbsp; I have this,&amp;nbsp;&amp;nbsp;a microsecond delay routine should be easy:&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="color: #FF6600; font-family: 'Courier New';"&gt;void Delay_us(long us)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="color: #FF6600; font-family: 'Courier New';"&gt;{&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="color: #FF6600; font-family: 'Courier New';"&gt;&amp;nbsp; MyTimer_Reset();&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="color: #FF6600; font-family: 'Courier New';"&gt;&amp;nbsp; while (MyTimer_GetElapsed_us() &amp;lt; us);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="color: #FF6600; font-family: 'Courier New';"&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;processor expert creates routines very close to what I need:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="color: #66CC33; font-family: 'Courier New';"&gt;byte TimerBean_Reset(void)&lt;BR /&gt;{&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="color: #66CC33; font-family: 'Courier New';"&gt;&amp;nbsp; /* Load content of counter register to variable CntrState */&lt;BR /&gt;&amp;nbsp; CntrState = TIM0_TCNT;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; return ERR_OK;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="color: #66CC33; font-family: 'Courier New';"&gt;}&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="color: #66CC33; font-family: 'Courier New';"&gt;byte TimerBean_GetCounterValue(word *Value)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp; *Value = TIM0_TCNT;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Return counter value */&lt;BR /&gt;&amp;nbsp; *Value -= CntrState;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Subtract counter state */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="color: #66CC33; font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* ... stored during last reset */&lt;BR /&gt;&amp;nbsp; return ERR_OK;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style=": ; color: #66CC33; font-family: 'Courier New';"&gt;}&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style=": ; color: #000000; font-size: 2;"&gt;but it doesn't measure in microseconds;&amp;nbsp; I think it measures in&amp;nbsp;jiffies.&amp;nbsp; The MCU is running at 16MHz, so that would give 16 jiffies to each microsecond.&amp;nbsp; and of course there are some overhead; Delay_us(0) is going to take up, say d_0&amp;nbsp; processor cycles.&amp;nbsp; So Delay_us(n) is equivalent&amp;nbsp; to delaying 16*n - d_0 jiffies.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="color: #000000; font-size: 2;"&gt;so I put this&amp;nbsp;in and test on the oscilloscope and it doesn't work properly.&amp;nbsp;&amp;nbsp; the timings are always out.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="color: #000000; font-size: 2;"&gt;this is the &lt;STRONG&gt;first problem&lt;/STRONG&gt;.&amp;nbsp; how to code and accurate microsecond delay timer?&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style=": ; color: #000000; font-size: 2;"&gt;&lt;STRONG&gt;Second Problem&lt;/STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="color: #FF9900; font-size: 2;"&gt;while (1) PA^ = 0xff;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="color: #000000; font-size: 2;"&gt;this creates a square wave on port A, frequency 0.5MHz.&amp;nbsp;&amp;nbsp; but the process is running at 16MHz.&amp;nbsp; surely it cannot take 32&amp;nbsp;processor cycles!&amp;nbsp;&amp;nbsp; I was working on an MSP430 and that took 4!&amp;nbsp;&amp;nbsp;what is happening?&amp;nbsp; why &amp;nbsp;is it so slow?&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;STRONG style=": ; color: #000000; font-size: 2;"&gt;Third Problem&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="color: #000000; font-size: 2;"&gt;I am needing to read/write binary&amp;nbsp; asynchronously to many pins.&amp;nbsp; that is why I need the above timing routines.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="color: #000000; font-size: 2;"&gt;I am considering a new approach;&amp;nbsp; to poll&amp;nbsp;the pins at 5us intervals.&amp;nbsp; so I need an interrupt to trigger every 5us:&amp;nbsp;if there has been some activity,&amp;nbsp; it will be&amp;nbsp; queued up for processing later.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="color: #000000; font-size: 2;"&gt;again processor expert generated some code that does this.&amp;nbsp;&amp;nbsp; the problem is even though I specified that the interval should be 1us, I'm getting an interval of around 33us!!&amp;nbsp; is there some limitation?&amp;nbsp; I tried setting the priority to high, but that didn't change anything.&amp;nbsp; am I trying to do something&amp;nbsp;unrealistic?&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="font-size: 2;"&gt;many thanks,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="font-size: 2;"&gt;Sam&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sun, 17 Jun 2007 20:25:51 GMT</pubDate>
    <dc:creator>SunFish7</dc:creator>
    <dc:date>2007-06-17T20:25:51Z</dc:date>
    <item>
      <title>Microsecond Timer for HC9S12E128, 3 problems</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Microsecond-Timer-for-HC9S12E128-3-problems/m-p/137046#M2482</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt; &lt;/DIV&gt;&lt;DIV&gt;I need to accurately wait or measure small periods of time, say 20us +- error of 5us&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="color: #FF6633; font-family: 'Courier New';"&gt;MyTimer_Reset();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="color: #FF6633; font-family: 'Courier New';"&gt;:&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="color: #FF6633; font-family: 'Courier New';"&gt;x = MyTimer_GetElapsed_us();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;once&amp;nbsp; I have this,&amp;nbsp;&amp;nbsp;a microsecond delay routine should be easy:&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="color: #FF6600; font-family: 'Courier New';"&gt;void Delay_us(long us)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="color: #FF6600; font-family: 'Courier New';"&gt;{&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="color: #FF6600; font-family: 'Courier New';"&gt;&amp;nbsp; MyTimer_Reset();&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="color: #FF6600; font-family: 'Courier New';"&gt;&amp;nbsp; while (MyTimer_GetElapsed_us() &amp;lt; us);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="color: #FF6600; font-family: 'Courier New';"&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;processor expert creates routines very close to what I need:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="color: #66CC33; font-family: 'Courier New';"&gt;byte TimerBean_Reset(void)&lt;BR /&gt;{&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="color: #66CC33; font-family: 'Courier New';"&gt;&amp;nbsp; /* Load content of counter register to variable CntrState */&lt;BR /&gt;&amp;nbsp; CntrState = TIM0_TCNT;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; return ERR_OK;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="color: #66CC33; font-family: 'Courier New';"&gt;}&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="color: #66CC33; font-family: 'Courier New';"&gt;byte TimerBean_GetCounterValue(word *Value)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp; *Value = TIM0_TCNT;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Return counter value */&lt;BR /&gt;&amp;nbsp; *Value -= CntrState;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Subtract counter state */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="color: #66CC33; font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* ... stored during last reset */&lt;BR /&gt;&amp;nbsp; return ERR_OK;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style=": ; color: #66CC33; font-family: 'Courier New';"&gt;}&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style=": ; color: #000000; font-size: 2;"&gt;but it doesn't measure in microseconds;&amp;nbsp; I think it measures in&amp;nbsp;jiffies.&amp;nbsp; The MCU is running at 16MHz, so that would give 16 jiffies to each microsecond.&amp;nbsp; and of course there are some overhead; Delay_us(0) is going to take up, say d_0&amp;nbsp; processor cycles.&amp;nbsp; So Delay_us(n) is equivalent&amp;nbsp; to delaying 16*n - d_0 jiffies.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="color: #000000; font-size: 2;"&gt;so I put this&amp;nbsp;in and test on the oscilloscope and it doesn't work properly.&amp;nbsp;&amp;nbsp; the timings are always out.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="color: #000000; font-size: 2;"&gt;this is the &lt;STRONG&gt;first problem&lt;/STRONG&gt;.&amp;nbsp; how to code and accurate microsecond delay timer?&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style=": ; color: #000000; font-size: 2;"&gt;&lt;STRONG&gt;Second Problem&lt;/STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="color: #FF9900; font-size: 2;"&gt;while (1) PA^ = 0xff;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="color: #000000; font-size: 2;"&gt;this creates a square wave on port A, frequency 0.5MHz.&amp;nbsp;&amp;nbsp; but the process is running at 16MHz.&amp;nbsp; surely it cannot take 32&amp;nbsp;processor cycles!&amp;nbsp;&amp;nbsp; I was working on an MSP430 and that took 4!&amp;nbsp;&amp;nbsp;what is happening?&amp;nbsp; why &amp;nbsp;is it so slow?&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;STRONG style=": ; color: #000000; font-size: 2;"&gt;Third Problem&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="color: #000000; font-size: 2;"&gt;I am needing to read/write binary&amp;nbsp; asynchronously to many pins.&amp;nbsp; that is why I need the above timing routines.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="color: #000000; font-size: 2;"&gt;I am considering a new approach;&amp;nbsp; to poll&amp;nbsp;the pins at 5us intervals.&amp;nbsp; so I need an interrupt to trigger every 5us:&amp;nbsp;if there has been some activity,&amp;nbsp; it will be&amp;nbsp; queued up for processing later.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="color: #000000; font-size: 2;"&gt;again processor expert generated some code that does this.&amp;nbsp;&amp;nbsp; the problem is even though I specified that the interval should be 1us, I'm getting an interval of around 33us!!&amp;nbsp; is there some limitation?&amp;nbsp; I tried setting the priority to high, but that didn't change anything.&amp;nbsp; am I trying to do something&amp;nbsp;unrealistic?&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="font-size: 2;"&gt;many thanks,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="font-size: 2;"&gt;Sam&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 17 Jun 2007 20:25:51 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Microsecond-Timer-for-HC9S12E128-3-problems/m-p/137046#M2482</guid>
      <dc:creator>SunFish7</dc:creator>
      <dc:date>2007-06-17T20:25:51Z</dc:date>
    </item>
    <item>
      <title>Re: Microsecond Timer for HC9S12E128, 3 problems</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Microsecond-Timer-for-HC9S12E128-3-problems/m-p/137047#M2483</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;/DIV&gt;What did you set up the clocks for?&lt;BR /&gt;&lt;BR /&gt;It sounds like you are not setting up things correctly as far as the clock generation.&lt;BR /&gt;&lt;BR /&gt;Processor expert should let you set up the PLL to get at least a 24 Mhz bus closk.&lt;BR /&gt;&lt;BR /&gt;You need to use ADVANCED mode and set High Speed mode, set PLL Clock enabled, set PLL muliplicatin factor to 3, Reference divider to 2.&lt;BR /&gt;&lt;BR /&gt;This is the generated code:&lt;BR /&gt;(note that the divider and multipler are +1)&lt;BR /&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;BR /&gt;&amp;nbsp; &lt;FONT size="1"&gt;/*&amp;nbsp; System clock initialization */&lt;BR /&gt;&amp;nbsp; /* CLKSEL: PLLSEL=0,PSTP=0,SYSWAI=0,ROAWAI=0,PLLWAI=0,CWAI=0,RTIWAI=0,COPWAI=0 */&lt;BR /&gt;&amp;nbsp; setReg8(CLKSEL, 0);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Select clock source from XTAL and set bits in CLKSEL reg. */&lt;BR /&gt;&amp;nbsp; /* PLLCTL: CME=1,PLLON=0,AUTO=1,ACQ=1,??=0,PRE=0,PCE=0,SCME=1 */&lt;BR /&gt;&amp;nbsp; setReg8(PLLCTL, 177);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Disable the PLL */&lt;BR /&gt;&amp;nbsp; /* SYNR: ??=0,??=0,SYN5=0,SYN4=0,SYN3=0,SYN2=0,SYN1=1,SYN0=0 */&lt;BR /&gt;&amp;nbsp; setReg8(SYNR, 2);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Set the multiplier register */&lt;BR /&gt;&amp;nbsp; /* REFDV: ??=0,??=0,??=0,??=0,REFDV3=0,REFDV2=0,REFDV1=0,REFDV0=1 */&lt;BR /&gt;&amp;nbsp; setReg8(REFDV, 1);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Set the divider register */&lt;BR /&gt;&amp;nbsp; /* PLLCTL: CME=1,PLLON=1,AUTO=1,ACQ=1,??=0,PRE=0,PCE=0,SCME=1 */&lt;BR /&gt;&amp;nbsp; setReg8(PLLCTL, 241);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; while(!CRGFLG_LOCK) {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Wait until the PLL is within the desired tolerance of the target frequency */&lt;BR /&gt;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp; /* CLKSEL: PLLSEL=1 */&lt;BR /&gt;&amp;nbsp; setReg8Bits(CLKSEL, 128);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Select clock source from PLL */&lt;BR /&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;BR /&gt;Message Edited by JimDon on &lt;SPAN class="date_text"&gt;2007-07-06&lt;/SPAN&gt; &lt;SPAN class="time_text"&gt;09:12 PM&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 07 Jul 2007 08:09:12 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Microsecond-Timer-for-HC9S12E128-3-problems/m-p/137047#M2483</guid>
      <dc:creator>JimDon</dc:creator>
      <dc:date>2007-07-07T08:09:12Z</dc:date>
    </item>
  </channel>
</rss>

