<?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 question on SPI timer in 8-bit Microcontrollers</title>
    <link>https://community.nxp.com/t5/8-bit-Microcontrollers/question-on-SPI-timer/m-p/136134#M4217</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;hello, I just begin the programming SPI with DEMO9S08LC60. Now, I am confused about the time counter. Every time the output&amp;nbsp;SP1CLK is 16-bit (It is not 8-bit?), Is this right? and temp also stops at 2.&lt;/DIV&gt;&lt;DIV&gt;Thank you for yourhelp&lt;/DIV&gt;&lt;DIV&gt;The sample code shows as follows.&lt;/DIV&gt;&lt;DIV&gt;void SPISendChar (unsigned char data)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (!SPI1S_SPTEF);&amp;nbsp;&amp;nbsp;&amp;nbsp; //Wait until transmit buffer is empty&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SPI1D =data;&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; //Transmit data&lt;BR /&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;void main ()&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp; SPI1C1=0xD5;&amp;nbsp; //set the SPI1 as a master&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp; SPI1BR= 0x45;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (temp=0;temp&amp;lt;100000;temp++)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&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; CurrentByte =0x42;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPISendChar(CurrentByte) ;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 07 Jun 2007 13:14:49 GMT</pubDate>
    <dc:creator>ScorpioIce</dc:creator>
    <dc:date>2007-06-07T13:14:49Z</dc:date>
    <item>
      <title>question on SPI timer</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/question-on-SPI-timer/m-p/136134#M4217</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;hello, I just begin the programming SPI with DEMO9S08LC60. Now, I am confused about the time counter. Every time the output&amp;nbsp;SP1CLK is 16-bit (It is not 8-bit?), Is this right? and temp also stops at 2.&lt;/DIV&gt;&lt;DIV&gt;Thank you for yourhelp&lt;/DIV&gt;&lt;DIV&gt;The sample code shows as follows.&lt;/DIV&gt;&lt;DIV&gt;void SPISendChar (unsigned char data)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (!SPI1S_SPTEF);&amp;nbsp;&amp;nbsp;&amp;nbsp; //Wait until transmit buffer is empty&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SPI1D =data;&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; //Transmit data&lt;BR /&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;void main ()&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp; SPI1C1=0xD5;&amp;nbsp; //set the SPI1 as a master&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp; SPI1BR= 0x45;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (temp=0;temp&amp;lt;100000;temp++)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&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; CurrentByte =0x42;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPISendChar(CurrentByte) ;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 07 Jun 2007 13:14:49 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/question-on-SPI-timer/m-p/136134#M4217</guid>
      <dc:creator>ScorpioIce</dc:creator>
      <dc:date>2007-06-07T13:14:49Z</dc:date>
    </item>
    <item>
      <title>Re: question on SPI timer</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/question-on-SPI-timer/m-p/136135#M4218</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;Hello,&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;For every byte sent&amp;nbsp;to the&amp;nbsp;SPI, a data byte is returned via MISO (whether you actually make use of the data, or not).&amp;nbsp; Because you are not explicitly clearing the SPRF flag, I assume a receive&amp;nbsp;overrun error would be occurring after three bytes.&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;Modifying your function as follows should fix this problem.&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT face="Courier New" size="2"&gt;unsigned char&amp;nbsp;SPISendChar (unsigned char data)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;while (!SPI1S_SPTEF);&amp;nbsp;&amp;nbsp;&amp;nbsp; // Wait until transmit buffer is empty&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;SPI1D = data;&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;Send data&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;FONT face="Courier New" size="2"&gt;&amp;nbsp;&amp;nbsp; while (!SPI1S_SPRF);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Wait for flag set&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT face="Courier New" size="2"&gt;&amp;nbsp;&amp;nbsp; return SPI1D&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Also clears flag&lt;BR /&gt;}&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;Your code does not show the handling of the /SS signal to the remote slave.&amp;nbsp; If you need to send a 16-bit value to the slave, this would be handled as two separate bytes, and with /SS set active prior to sending the first byte, and set inactive only after the second byte is completed.&amp;nbsp; In this instance, you would need to use GP output as the SS signal, and &lt;U&gt;not&lt;/U&gt; the "automatic" SS operation available within the SPI module.&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;Regards,&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;Mac&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 07 Jun 2007 23:33:39 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/question-on-SPI-timer/m-p/136135#M4218</guid>
      <dc:creator>bigmac</dc:creator>
      <dc:date>2007-06-07T23:33:39Z</dc:date>
    </item>
    <item>
      <title>Re: question on SPI timer</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/question-on-SPI-timer/m-p/136136#M4219</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Hi,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;What Mac said plus....&lt;/DIV&gt;&lt;DIV&gt;I think you are saying you are seeing a 16-bit transfer and think this is strange. Well once you fix the reason for stopping you will see a continuous 100000 bit transfer!&lt;/DIV&gt;&lt;DIV&gt;If you keep the buffered SCID port filled, it will all clock out continuously with no inter-byte pauses. Only if your device is busy with other things for approx. two character times will you see a pause in the clock/data streams.&lt;/DIV&gt;&lt;DIV&gt;Sorry if I have misunderstood you and are stating the obvious (but it is your first post)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 08 Jun 2007 05:44:30 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/question-on-SPI-timer/m-p/136136#M4219</guid>
      <dc:creator>peg</dc:creator>
      <dc:date>2007-06-08T05:44:30Z</dc:date>
    </item>
    <item>
      <title>Re: question on SPI timer</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/question-on-SPI-timer/m-p/136137#M4220</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;Thank you very much, Bigmic, and Peg. Yesterday, when I read register SPI1S1 from memory, it is the same as Bigmic said. Now the problem is solved &lt;IMG alt=":smileyhappy:" class="emoticon emoticon-smileyhappy" id="smileyhappy" src="http://freescale.i.lithium.com/i/smilies/16x16_smiley-happy.gif" title="Smiley Happy" /&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;BR /&gt;&lt;BR /&gt;Message Edited by Scorpio Ice on &lt;SPAN class="date_text"&gt;2007-06-08&lt;/SPAN&gt; &lt;SPAN class="time_text"&gt;06:20 AM&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 08 Jun 2007 12:19:25 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/question-on-SPI-timer/m-p/136137#M4220</guid>
      <dc:creator>ScorpioIce</dc:creator>
      <dc:date>2007-06-08T12:19:25Z</dc:date>
    </item>
  </channel>
</rss>

