<?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中的主题 Re: Timing help / LCD</title>
    <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Timing-help-LCD/m-p/210812#M8717</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Within the FCS ( full chip simulation) you can find time testing capabilities for your microcontroller based off of your bus clock. I have found that the easiest way to make a proper delay was through using for loops and creating a formula to find out how long each will be.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 02 Jun 2011 00:53:35 GMT</pubDate>
    <dc:creator>jonathan_abbati</dc:creator>
    <dc:date>2011-06-02T00:53:35Z</dc:date>
    <item>
      <title>Timing help / LCD</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Timing-help-LCD/m-p/210811#M8716</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Friends!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am working with the MC9S12DG128 and attempting to utilize the&amp;nbsp;onboard timer defined as TCNT. I am attempting to program the HD44780 LCD which is integrated on my EVALH1 board from technological arts. I have been following various online examples for 4 bit initialization and I believe that timing is the issue which I am having right now. My questions would have to be:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;1) Is there a better timing method that you could think of?&lt;/P&gt;&lt;P&gt;2) Within code warrior is there a way that I can test if my delay is delaying to the proper time, I cannot seem to see where it shows the clock cycles.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here is my timer &amp;amp; main code given in that order&amp;nbsp;code:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Timer:&lt;/P&gt;&lt;P&gt;void timer_init(void)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp; TSCR1 = 0x80; // SET TEN (TIMER ENABLE BIT)&lt;BR /&gt;&amp;nbsp; TSCR2 = 0x03; // SET PRESCALER TO DIVIDE BUS CLOCK BY 8 WHICH GIVES US A PERIOD OF 1uS&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; void timer_wait1us(unsigned short z)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned short start1; // NOTE THAT THE FIRST VALUE OF THE FOR LOOP HAS BEEN LEFT EMPTY SO WE MAY DEFINE IT WITHIN THE PROGRAM&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(;z&amp;gt;0;z--)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; start1 = TCNT;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while ((TCNT - start1) &amp;lt;=1)&amp;nbsp; // -start1 IS USED TO SET THE TIMER BACK TO 0 BEFORE WE READ FROM IT&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {}&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; void timer_wait1ms (unsigned short x)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned short start2;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(;x&amp;gt;0;x--)&lt;BR /&gt;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; start2 = TCNT;&lt;BR /&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; while ((TCNT - start2) &amp;lt;= 1000)&lt;BR /&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; {}&lt;/P&gt;&lt;P&gt;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Main:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;#include &amp;lt;hidef.h&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* common defines and macros */&lt;BR /&gt;#include "derivative.h"&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* derivative-specific definitions */&lt;BR /&gt;#include "Timer.h"&lt;/P&gt;&lt;P&gt;void toggle_enable(void);&lt;BR /&gt;void outcmd(unsigned char command);&lt;BR /&gt;void clear (void);&lt;BR /&gt;void output(unsigned char letter);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;void main(void) {&lt;BR /&gt;unsigned long z;&lt;BR /&gt;DDRS = 0xFF;&lt;BR /&gt;DDRE = 0xFF;&lt;/P&gt;&lt;P&gt;timer_init();&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;timer_wait1ms(20);&lt;BR /&gt;outcmd(0x30);&lt;BR /&gt;timer_wait1ms(5);&lt;BR /&gt;outcmd(0x30);&lt;BR /&gt;timer_wait1us(160);&lt;BR /&gt;outcmd(0x30);&lt;BR /&gt;timer_wait1us(160);&lt;BR /&gt;outcmd(0x20);&lt;BR /&gt;timer_wait1ms(5);&lt;BR /&gt;outcmd(0x28);&lt;BR /&gt;timer_wait1ms(5);&lt;/P&gt;&lt;P&gt;outcmd(0x08);&lt;BR /&gt;timer_wait1ms(5);&lt;/P&gt;&lt;P&gt;clear();&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;outcmd(0x0E);&lt;BR /&gt;timer_wait1ms(50);&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;// CONSISTANT UNTIL HERE&lt;/P&gt;&lt;P&gt;outcmd(0x06);&lt;BR /&gt;timer_wait1ms(50);&lt;BR /&gt;outcmd(0x0C);&lt;BR /&gt;timer_wait1ms(50);&lt;/P&gt;&lt;P&gt;output(0x48);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;EnableInterrupts;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&amp;nbsp; for(;&lt;A href="http://freescale.i.lithium.com/i/smilies/16x16_smiley-wink.gif"&gt;&lt;IMG alt=":smileywink:" class="emoticon emoticon-smileywink" src="http://freescale.i.lithium.com/i/smilies/16x16_smiley-wink.gif" title="Smiley Wink" /&gt;&lt;/A&gt; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; _FEED_COP(); /* feeds the dog */&lt;BR /&gt;&amp;nbsp; } /* loop forever */&lt;BR /&gt;&amp;nbsp; /* please make sure that you never leave main */&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;void toggle_enable(void){&lt;/P&gt;&lt;P&gt;&amp;nbsp; PORTE_BIT4 = 1;&lt;BR /&gt;&amp;nbsp; timer_wait1us(2);&lt;BR /&gt;&amp;nbsp; PORTE_BIT4 = 0;&lt;BR /&gt;&amp;nbsp; timer_wait1ms(5);&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;void outcmd(unsigned char command){&lt;/P&gt;&lt;P&gt;&amp;nbsp; PTS = 0xF0 &amp;amp; command;&lt;BR /&gt;&amp;nbsp; toggle_enable();&lt;BR /&gt;&amp;nbsp; PTS = 0xF0 &amp;amp; (command&amp;lt;&amp;lt;4);&lt;BR /&gt;&amp;nbsp; toggle_enable();&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;void clear(void){&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; outcmd(0x01);&lt;BR /&gt;&amp;nbsp; timer_wait1ms(5);&lt;BR /&gt;&amp;nbsp; outcmd(0x02);&lt;BR /&gt;&amp;nbsp; timer_wait1ms(5);&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;void output(unsigned char letter){&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; PORTE_BIT7 = 1;&lt;BR /&gt;&amp;nbsp; toggle_enable();&lt;BR /&gt;&amp;nbsp; PTS = 0xF0 &amp;amp; letter;&lt;BR /&gt;&amp;nbsp; toggle_enable();&lt;BR /&gt;&amp;nbsp; PTS = 0xF0 &amp;amp; (letter&amp;lt;&amp;lt;4);&lt;BR /&gt;&amp;nbsp; toggle_enable();&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you so very much for your time I greatly appreciate anything you may be able to help me&amp;nbsp;with!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 31 May 2011 00:46:40 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Timing-help-LCD/m-p/210811#M8716</guid>
      <dc:creator>jonathan_abbati</dc:creator>
      <dc:date>2011-05-31T00:46:40Z</dc:date>
    </item>
    <item>
      <title>Re: Timing help / LCD</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Timing-help-LCD/m-p/210812#M8717</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Within the FCS ( full chip simulation) you can find time testing capabilities for your microcontroller based off of your bus clock. I have found that the easiest way to make a proper delay was through using for loops and creating a formula to find out how long each will be.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 02 Jun 2011 00:53:35 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Timing-help-LCD/m-p/210812#M8717</guid>
      <dc:creator>jonathan_abbati</dc:creator>
      <dc:date>2011-06-02T00:53:35Z</dc:date>
    </item>
  </channel>
</rss>

