<?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 SPI Issues in S12 / MagniV Microcontrollers</title>
    <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/SPI-Issues/m-p/145306#M3876</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Hello, I am using&amp;nbsp;two 9S12E64 MCUs one as Slave and one as Master.&amp;nbsp; They are able to communicate with each other and as far as I know I am not having problems with the master, but I am having trouble getting the slave to send the desired data to the master.&amp;nbsp; Here is my master code.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Bit1_PutVal(0);&lt;BR /&gt;&amp;nbsp;delay(100);&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;while(!SPISR_SPTEF);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #FF6600;"&gt;// instruction&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;(void)SM1_SendChar(0x05);&lt;BR /&gt;&amp;nbsp;while(!SPISR_SPIF);&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;delay(20000);&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;while(!SPISR_SPTEF);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="color: #FF6600;"&gt;//dummy data to recieve 0xaa from slave&lt;BR /&gt;&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;(void)SM1_SendChar(0x00);&lt;BR /&gt;&amp;nbsp;while(!SPISR_SPIF);&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;delay(20000);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Bit1_PutVal(1);&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;On the slave side, the slave reads 0x05 as an instruction to send 0xaa to the master.&amp;nbsp; My question is when do I put 0xaa into the SPIDR to where it will be sent when the master sends 0x00?&amp;nbsp; This is my slave code:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;while(!(SPISR &amp;amp; 0x80));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tester = SPISR;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;char0 = SPIDR;&lt;/DIV&gt;&lt;DIV&gt;if(char0 == 5){&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(void)SS1_SendChar(0xaa);&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;while(!(SPISR &amp;amp; 0x80));&lt;BR /&gt;&lt;/DIV&gt;&lt;DIV&gt;What is wrong with my code?&amp;nbsp; How do I get 0xaa into the SPIDR before the second clock cycle?&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Thanks for the help!&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 16 Feb 2007 03:03:22 GMT</pubDate>
    <dc:creator>BCast</dc:creator>
    <dc:date>2007-02-16T03:03:22Z</dc:date>
    <item>
      <title>SPI Issues</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/SPI-Issues/m-p/145306#M3876</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Hello, I am using&amp;nbsp;two 9S12E64 MCUs one as Slave and one as Master.&amp;nbsp; They are able to communicate with each other and as far as I know I am not having problems with the master, but I am having trouble getting the slave to send the desired data to the master.&amp;nbsp; Here is my master code.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Bit1_PutVal(0);&lt;BR /&gt;&amp;nbsp;delay(100);&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;while(!SPISR_SPTEF);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #FF6600;"&gt;// instruction&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;(void)SM1_SendChar(0x05);&lt;BR /&gt;&amp;nbsp;while(!SPISR_SPIF);&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;delay(20000);&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;while(!SPISR_SPTEF);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="color: #FF6600;"&gt;//dummy data to recieve 0xaa from slave&lt;BR /&gt;&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;(void)SM1_SendChar(0x00);&lt;BR /&gt;&amp;nbsp;while(!SPISR_SPIF);&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;delay(20000);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Bit1_PutVal(1);&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;On the slave side, the slave reads 0x05 as an instruction to send 0xaa to the master.&amp;nbsp; My question is when do I put 0xaa into the SPIDR to where it will be sent when the master sends 0x00?&amp;nbsp; This is my slave code:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;while(!(SPISR &amp;amp; 0x80));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tester = SPISR;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;char0 = SPIDR;&lt;/DIV&gt;&lt;DIV&gt;if(char0 == 5){&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(void)SS1_SendChar(0xaa);&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;while(!(SPISR &amp;amp; 0x80));&lt;BR /&gt;&lt;/DIV&gt;&lt;DIV&gt;What is wrong with my code?&amp;nbsp; How do I get 0xaa into the SPIDR before the second clock cycle?&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Thanks for the help!&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 16 Feb 2007 03:03:22 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/SPI-Issues/m-p/145306#M3876</guid>
      <dc:creator>BCast</dc:creator>
      <dc:date>2007-02-16T03:03:22Z</dc:date>
    </item>
    <item>
      <title>Re: SPI Issues</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/SPI-Issues/m-p/145307#M3877</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;What are your CPOL and CPHA settings - I presume they match for both ends?&amp;nbsp; Note that, if you have CPHA = 0, you will need to raise and then lower the /SS signal [presumably Bit1_PutVal()] prior to sending the second byte.&amp;nbsp; The byte value to be returned by the slave must be loaded to its buffer prior to /SS becoming low again.&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 the CPHA = 1 case, the /SS signal may remain low, and the return byte value must be loaded to the buffer prior to the first clock edge associated with the second byte.&amp;nbsp; Your slave code would likely&amp;nbsp;be doing this.&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 your master send function, after the SPIF flag is set, I would suggest you read the SPI data register in order to clear the flag, and&amp;nbsp;to prevent an over-run condition.&amp;nbsp; An overrun may be preventing you from correctly receiving the next return byte.&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;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 16 Feb 2007 10:12:21 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/SPI-Issues/m-p/145307#M3877</guid>
      <dc:creator>bigmac</dc:creator>
      <dc:date>2007-02-16T10:12:21Z</dc:date>
    </item>
    <item>
      <title>Re: SPI Issues</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/SPI-Issues/m-p/145308#M3878</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Thank you for your response,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Yes, the master and slave match in CPOL and CPHA (both are equal to 1).&amp;nbsp; I have made the change you suggested in the master code, but I have noticed no change in results.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Bit1_PutVal(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;&amp;nbsp;&amp;nbsp;&amp;nbsp; //put&amp;nbsp;SS low&lt;BR /&gt;&amp;nbsp;delay(10);&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;while(!SPISR_SPTEF);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //instruction&lt;BR /&gt;&amp;nbsp;&amp;nbsp;(void)SM1_SendChar(0x05);&lt;BR /&gt;&amp;nbsp;while(!SPISR_SPIF);&lt;BR /&gt;&amp;nbsp;delay(100);&lt;BR /&gt;&amp;nbsp;slave_data = SPIDR;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;delay(10000);&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;while(!SPISR_SPTEF);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //address&lt;BR /&gt;&amp;nbsp;(void)SM1_SendChar(0x00);&lt;BR /&gt;&amp;nbsp;while(!SPISR_SPIF);&lt;BR /&gt;&amp;nbsp;delay(100);&lt;BR /&gt;&amp;nbsp;slave_data = SPIDR;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;delay(10000);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;Bit1_PutVal(1);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Put SS high&lt;BR /&gt;&amp;nbsp;delay(10000);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;BR /&gt;&lt;BLOCKQUOTE&gt;&lt;DIV&gt;bigmac wrote:&lt;BR /&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;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;For the CPHA = 1 case, the /SS signal may remain low, and the return byte value must be loaded to the buffer prior to the first clock edge associated with the second byte.&amp;nbsp; Your slave code would likely&amp;nbsp;be doing this.&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;/BLOCKQUOTE&gt;&lt;DIV&gt;Is writing the SPIDR prior to the second byte the same as writing to the buffer?&amp;nbsp; This is my slave code thus far.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;for(;&lt;IMG alt=":smileywink:" class="emoticon emoticon-smileywink" id="smileywink" src="http://freescale.i.lithium.com/i/smilies/16x16_smiley-wink.gif" title="Smiley Wink" /&gt;{&lt;/DIV&gt;&lt;DIV&gt;while(!SPISR_SPIF);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //first byte recieved&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(SPIDR == 5)&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;&amp;nbsp;clear_spif= SPISR;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;instruction = SPIDR;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;clear_sptef = SPISR;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SPIDR = 0xaa;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //send 0xaa during second cycle&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;while(!SPISR_SPIF);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //second byte recieved.&lt;/DIV&gt;&lt;DIV&gt;&lt;BR /&gt;}&amp;nbsp;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Could you possibly provide me with an outline code or steps?&amp;nbsp; I am really struggling with when/how to clear the flags and when to read/write to SPIDR on the slave side.&amp;nbsp; When reading the MISO pin on the o-scope I find that sometimes 0xaa is first cycle of the next instruction (cycle 3, 5, 7....), I dont understand why that is happening.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Thanks again!&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 17 Feb 2007 01:08:16 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/SPI-Issues/m-p/145308#M3878</guid>
      <dc:creator>BCast</dc:creator>
      <dc:date>2007-02-17T01:08:16Z</dc:date>
    </item>
    <item>
      <title>Re: SPI Issues</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/SPI-Issues/m-p/145309#M3879</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;Sorry for the confusion - I did mean the data register SPIDR when referring to the "buffer".&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 the master function, the delay(100) prior to reading the data register is superfluous since the return data will be immediately available&amp;nbsp;when SPIF&amp;nbsp;becomes set.&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 the slave function, here is my suggested (but untested) code -&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;for ( ; ; ) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;while (!SPISR_SPIF);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Wait for first byte received&lt;BR /&gt;&amp;nbsp;&amp;nbsp;instruction = SPIDR;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Also clears flag&lt;BR /&gt;&amp;nbsp;&amp;nbsp;if (instruction == 5)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SPIDR = 0xaa;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Send 0xaa during second cycle&lt;BR /&gt;&amp;nbsp;&amp;nbsp;else&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SPIDR = 0;&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;while(!SPISR_SPIF);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Wait for second byte received&lt;BR /&gt;&amp;nbsp;&amp;nbsp;instruction = SPIDR;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Clear flag (ignore received value)&lt;BR /&gt;}&amp;nbsp;&lt;BR /&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;This code assumes that the COP timer is disabled.&amp;nbsp; If not, you will need to reset the COP timer&amp;nbsp;during the wait loops.&amp;nbsp; Ultimately, you will probably want to use interrupts for the slave processing, so you can do other things whilst waiting for SPIF to become set.&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;&amp;nbsp;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 17 Feb 2007 10:40:21 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/SPI-Issues/m-p/145309#M3879</guid>
      <dc:creator>bigmac</dc:creator>
      <dc:date>2007-02-17T10:40:21Z</dc:date>
    </item>
    <item>
      <title>Re: SPI Issues</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/SPI-Issues/m-p/145310#M3880</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Dear Customer,&lt;/DIV&gt;&lt;DIV&gt;Is it possible to send us a project demonstrating your problem (&lt;A href="mailto:support@processorexpert.com" rel="nofollow" target="_blank"&gt;support@processorexpert.com&lt;/A&gt;)? We will check your project and bean settings and user code and we will try to solve your problem using Processor Expert' beans. According to your description you combine&amp;nbsp;methods of Processor Expert and direct access to registers and it isn't good way.&lt;/DIV&gt;&lt;DIV&gt;Best Regards, Jan Pospisilik,Processor Expert Support&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 19 Feb 2007 21:28:00 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/SPI-Issues/m-p/145310#M3880</guid>
      <dc:creator>ProcessorExpert</dc:creator>
      <dc:date>2007-02-19T21:28:00Z</dc:date>
    </item>
    <item>
      <title>Re: SPI Issues</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/SPI-Issues/m-p/145311#M3881</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Bigmac,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Thanks again for your advice, it was very helpful.&amp;nbsp; Turns out that the Process Expert beans were the problem.&amp;nbsp; As soon as I deleted the beans the code you suggested worked.&amp;nbsp; The next step would be to implement this code using interrupts.&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 20 Feb 2007 23:54:29 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/SPI-Issues/m-p/145311#M3881</guid>
      <dc:creator>BCast</dc:creator>
      <dc:date>2007-02-20T23:54:29Z</dc:date>
    </item>
  </channel>
</rss>

