<?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>8-bit Microcontrollers中的主题 Re: Overwritten memory; MC9S08AW60</title>
    <link>https://community.nxp.com/t5/8-bit-Microcontrollers/Overwritten-memory-MC9S08AW60/m-p/234575#M19469</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;These symptoms would indicate a stack overflow problem.&amp;nbsp; It may be possible that you have an unintended nested interrupt situation.&amp;nbsp; The spi_enableInterrupt() function might be a possible cause, if it is globally enabling interrupts within the ISR function.&amp;nbsp; The use of this function within the ISR would seem unnecessary, except for the final disable of the SPI interrupt when the data sequence is completed.&amp;nbsp; I would also suspect that you have the SPTEF interrupt enabled, which will exacerbate the problem.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If you wish to use interrupts for SPI master operation, only the RDRF interrupt should be enabled - the SPTEF interrupt should remain disabled.&amp;nbsp; When the RDRF flag becomes set, this means that the transfer of the last send byte has been completed, and the next byte may now be sent after the RDRF flag has been cleared.&amp;nbsp; It is not necessary to test the SPTEF flag.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I assume that the spi_selectChip() function is simply enabling the CS signal to the external device.&amp;nbsp; You do not appear to be disabling the signal after completion of the send sequence.&amp;nbsp; Since the data sequence is loaded byte-by-byte into the array variable, this would seem very inefficient.&amp;nbsp; An alternative method would be to create constant array variables directly within flash memory.&amp;nbsp; The data can then be accessed using a pointer variable, without the need for using an array variable.&amp;nbsp; The following code snippet shows this approach.&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;//-----------------------------------------------------------------------------&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;// Global variables:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;volatile byte *pntr;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;volatile byte buf_count;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;//-----------------------------------------------------------------------------&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;// Data sequence tables:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;const byte data_seq1[] = { &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; 0x9F, 0x24, 0x40, 0x4F,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; 0x9F, 0x28, 0x40, 0x00,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; 0x9F, 0x29, 0x40, 0x02,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; 0x9F, 0x30, 0x40, 0x9F,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; 0x9F, 0x32, 0x40, 0x00,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; 0x9F, 0x33, 0x40, 0x0D,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; 0x9F, 0x35, 0x40, 0x00,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; 0x9F, 0x36, 0x40, 0x0D&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;};&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;const byte data_seq2[] = { &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; 0x9F, 0x24, 0x40, 0x3D,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; 0x9F, 0x28, 0x40, 0x20,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; 0x9F, 0x29, 0x40, 0x95,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; 0x9F, 0x30, 0x40, 0xFF,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; 0x9F, 0x32, 0x40, 0x03,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; 0x9F, 0x33, 0x40, 0xE8,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; 0x9F, 0x35, 0x40, 0x03,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; 0x9F, 0x36, 0x40, 0xE8&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;};&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;//-----------------------------------------------------------------------------&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;void main(void)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; SPI_init();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; EnableInterrupts;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Globally enable interrupts&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; SPI_selectChip( true, 0);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Enable SPI slave device&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; SPI_send_start( 27);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Start send sequence&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; while (buf_count)&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 send sequence completed&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __RESET_WATCHDOG();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; SPI_selectChip( false, 0);&amp;nbsp;&amp;nbsp;&amp;nbsp; // Disable SPI slave device&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; for( ; ; )&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __RESET_WATCHDOG();&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; }&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;} &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;//-----------------------------------------------------------------------------&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;// Start SPI send sequence&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;void SPI_send_start( byte takt)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; if (takt == 27)&amp;nbsp; pntr = data_seq1;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; if (takt == 26)&amp;nbsp; pntr = data_seq2;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; if (takt) { &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (SPI1S_SPTEF == 0);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPI1D = *pntr++;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Send first byte of sequence&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; buf_count = 31;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPI_Interrupt( true);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Enable SPRF interrupts&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; else&amp;nbsp; buf_count = 0;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;//-----------------------------------------------------------------------------&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;// Interrupt functions:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;__interrupt VectorNumber_Vspi1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;void ISR_SPI( void)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; (void)SPI1S;&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; // Clear SPRF flag&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; (void)SPI1D;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; if (buf_count) {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPI1D = *pntr++;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; buf_count--;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; else&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPI_Interrupt( false);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Disable SPI interrupts&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Mac&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 02 Aug 2013 14:25:00 GMT</pubDate>
    <dc:creator>bigmac</dc:creator>
    <dc:date>2013-08-02T14:25:00Z</dc:date>
    <item>
      <title>Overwritten memory; MC9S08AW60</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/Overwritten-memory-MC9S08AW60/m-p/234573#M19467</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;I try to tesst my programm with the True time simulator.&lt;/P&gt;&lt;P&gt;However after sbufferpos = 15 (after 15 times ISR_Interrupt) some parts of the buffer array will be overwritten.&lt;/P&gt;&lt;P&gt;Then there occurs an error:&lt;/P&gt;&lt;P&gt;Error: At location 0057 - &lt;/P&gt;&lt;P&gt;Error: Attempt to execute from unimplemented (--) ROM&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Do you have any idea how to fix this problem?&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;// Includes ----------------------------------------------------------------------------------------&lt;/P&gt;&lt;P&gt;#include &amp;lt;hidef.h&amp;gt; /* for EnableInterrupts macro */&lt;/P&gt;&lt;P&gt;#include "derivative.h" /* include peripheral declarations */&lt;/P&gt;&lt;P&gt;#include "SPIDriver.h"&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;// Variablen ---------------------------------------------------------------------------------------&lt;/P&gt;&lt;P&gt;static volatile int sbufferpos = 0;&lt;/P&gt;&lt;P&gt;byte buffer[33];&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;// Prototypen --------------------------------------------------------------------------------------&lt;/P&gt;&lt;P&gt;void BefehlsbufferErstellen(int takt);&lt;/P&gt;&lt;P&gt;void SendeBuffer(byte b);&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;// Main --------------------------------------------------------------------------------------------&lt;/P&gt;&lt;P&gt;void main(void) {&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; spi_init();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; spi_setMode(Master, FallingEdge, LeadingEdge, MSBfirst);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; spi_selectChip(true,0);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BefehlsbufferErstellen(27);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; spi_enableInterrupt(true);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(;;)&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;/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; __RESET_WATCHDOG();&lt;/P&gt;&lt;P&gt;&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; } &lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;// Interruptroutinen ---------------------------------------------------------------------------------&lt;/P&gt;&lt;P&gt;__interrupt VectorNumber_Vspi1 void ISR_SPI() {&lt;/P&gt;&lt;P&gt;&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; if((SPI1S&amp;amp;(SPI1S_SPRF_MASK)) == 0) {&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; } &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; else{&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;&amp;nbsp;&amp;nbsp; SPI1S;&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;&amp;nbsp;&amp;nbsp; SPI1D;&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; }&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; if((SPI1S&amp;amp;(SPI1S_SPTEF_MASK)) == 0){&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; } &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; else{&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; spi_enableInterrupt(false);&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(sbufferpos &amp;gt; sizeof(buffer) - 1) {&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sbufferpos = 0;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else{&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SendeBuffer(buffer[sbufferpos]); &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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sbufferpos++;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; spi_enableInterrupt(true);&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;&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;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;// Funktionen -----------------------------------------------------------------------------------------&lt;/P&gt;&lt;P&gt;void BefehlsbufferErstellen (int takt) {&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if(takt== 27) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[0]= 0x9F;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Set Address&lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[1]= 0x24;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 36d&lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[2]= 0x40;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Write &lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[3]= 0x4F;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 4Fh&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[4]= 0x9F;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Set Address&lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[5]= 0x28;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 40d&lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[6]= 0x40;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Write &lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[7]= 0x00;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 00h&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[8]= 0x9F;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Set Address&lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[9]= 0x29;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 41d&lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[10]= 0x40;&amp;nbsp;&amp;nbsp; // Write&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[11]= 0x02;&amp;nbsp;&amp;nbsp; // 02h&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[12]= 0x9F;&amp;nbsp;&amp;nbsp; // Set Address&lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[13]= 0x30;&amp;nbsp;&amp;nbsp; // 42d&lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[14]= 0x40;&amp;nbsp;&amp;nbsp; // Write&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[15]= 0x9F;&amp;nbsp;&amp;nbsp; // 0x9Fh&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[16]= 0x9F;&amp;nbsp;&amp;nbsp; // Set Address&lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[17]= 0x32;&amp;nbsp;&amp;nbsp; // 44d&lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[18]= 0x40;&amp;nbsp;&amp;nbsp; // Write&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[19]= 0x00;&amp;nbsp;&amp;nbsp; // 00h&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[20]= 0x9F;&amp;nbsp;&amp;nbsp; // Set Address&lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[21]= 0x33;&amp;nbsp;&amp;nbsp; // 45d&lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[22]= 0x40;&amp;nbsp;&amp;nbsp; // Write&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[23]= 0x0D;&amp;nbsp;&amp;nbsp; // 0Dh&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[24]= 0x9F;&amp;nbsp;&amp;nbsp; // Set Address&lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[25]= 0x35;&amp;nbsp;&amp;nbsp; // 47d&lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[26]= 0x40;&amp;nbsp;&amp;nbsp; // Write&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[27]= 0x00;&amp;nbsp;&amp;nbsp; // 00h&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[28]= 0x9F;&amp;nbsp;&amp;nbsp; // Set Address&lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[29]= 0x36;&amp;nbsp;&amp;nbsp; // 48d&lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[30]= 0x40;&amp;nbsp;&amp;nbsp; // Write&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[31]= 0x0D;&amp;nbsp;&amp;nbsp; // 0Dh&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; } &lt;/P&gt;&lt;P&gt;&amp;nbsp; else if(takt == 26){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[0]= 0x9F;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Set Address&lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[1]= 0x24;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 36d&lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[2]= 0x40;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Write &lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[3]= 0x3D;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 3Dh&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[4]= 0x9F;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Set Address&lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[5]= 0x28;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 40d&lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[6]= 0x40;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Write &lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[7]= 0x20;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 20h&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[8]= 0x9F;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Set Address&lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[9]= 0x29;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 41d&lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[10]= 0x40;&amp;nbsp;&amp;nbsp; // Write&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[11]= 0x95;&amp;nbsp;&amp;nbsp; // 95h&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[12]= 0x9F;&amp;nbsp;&amp;nbsp; // Set Address&lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[13]= 0x30;&amp;nbsp;&amp;nbsp; // 42d&lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[14]= 0x40;&amp;nbsp;&amp;nbsp; // Write&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[15]= 0xFF;&amp;nbsp;&amp;nbsp; // FFh&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[16]= 0x9F;&amp;nbsp;&amp;nbsp; // Set Address&lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[17]= 0x32;&amp;nbsp;&amp;nbsp; // 44d&lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[18]= 0x40;&amp;nbsp;&amp;nbsp; // Write&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[19]= 0x03;&amp;nbsp;&amp;nbsp; // 03h&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[20]= 0x9F;&amp;nbsp;&amp;nbsp; // Set Address&lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[21]= 0x33;&amp;nbsp;&amp;nbsp; // 45d&lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[22]= 0x40;&amp;nbsp;&amp;nbsp; // Write&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[23]= 0xE8;&amp;nbsp;&amp;nbsp; // E8h&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[24]= 0x9F;&amp;nbsp;&amp;nbsp; // Set Address&lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[25]= 0x35;&amp;nbsp;&amp;nbsp; // 47d&lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[26]= 0x40;&amp;nbsp;&amp;nbsp; // Write&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[27]= 0x03;&amp;nbsp;&amp;nbsp; // 03h&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[28]= 0x9F;&amp;nbsp;&amp;nbsp; // Set Address&lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[29]= 0x36;&amp;nbsp;&amp;nbsp; // 48d&lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[30]= 0x40;&amp;nbsp;&amp;nbsp; // Write&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; buffer[31]= 0xE8;&amp;nbsp;&amp;nbsp; // E8h&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; } &lt;/P&gt;&lt;P&gt;&amp;nbsp; else {&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;void SendeBuffer(byte b) {&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;__RESET_WATCHDOG();&lt;/P&gt;&lt;P&gt;spi_sendData(b);&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 01 Aug 2013 09:09:10 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/Overwritten-memory-MC9S08AW60/m-p/234573#M19467</guid>
      <dc:creator>janr_</dc:creator>
      <dc:date>2013-08-01T09:09:10Z</dc:date>
    </item>
    <item>
      <title>Re: Overwritten memory; MC9S08AW60</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/Overwritten-memory-MC9S08AW60/m-p/234574#M19468</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi&lt;/P&gt;&lt;P&gt;I didn't see any problem in your code. could you provide the whole project to me?&amp;nbsp; I'd like to check the PRM file and MAP file. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best Regards&lt;/P&gt;&lt;P&gt;XWP&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 02 Aug 2013 08:26:49 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/Overwritten-memory-MC9S08AW60/m-p/234574#M19468</guid>
      <dc:creator>weapon</dc:creator>
      <dc:date>2013-08-02T08:26:49Z</dc:date>
    </item>
    <item>
      <title>Re: Overwritten memory; MC9S08AW60</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/Overwritten-memory-MC9S08AW60/m-p/234575#M19469</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;These symptoms would indicate a stack overflow problem.&amp;nbsp; It may be possible that you have an unintended nested interrupt situation.&amp;nbsp; The spi_enableInterrupt() function might be a possible cause, if it is globally enabling interrupts within the ISR function.&amp;nbsp; The use of this function within the ISR would seem unnecessary, except for the final disable of the SPI interrupt when the data sequence is completed.&amp;nbsp; I would also suspect that you have the SPTEF interrupt enabled, which will exacerbate the problem.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If you wish to use interrupts for SPI master operation, only the RDRF interrupt should be enabled - the SPTEF interrupt should remain disabled.&amp;nbsp; When the RDRF flag becomes set, this means that the transfer of the last send byte has been completed, and the next byte may now be sent after the RDRF flag has been cleared.&amp;nbsp; It is not necessary to test the SPTEF flag.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I assume that the spi_selectChip() function is simply enabling the CS signal to the external device.&amp;nbsp; You do not appear to be disabling the signal after completion of the send sequence.&amp;nbsp; Since the data sequence is loaded byte-by-byte into the array variable, this would seem very inefficient.&amp;nbsp; An alternative method would be to create constant array variables directly within flash memory.&amp;nbsp; The data can then be accessed using a pointer variable, without the need for using an array variable.&amp;nbsp; The following code snippet shows this approach.&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;//-----------------------------------------------------------------------------&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;// Global variables:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;volatile byte *pntr;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;volatile byte buf_count;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;//-----------------------------------------------------------------------------&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;// Data sequence tables:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;const byte data_seq1[] = { &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; 0x9F, 0x24, 0x40, 0x4F,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; 0x9F, 0x28, 0x40, 0x00,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; 0x9F, 0x29, 0x40, 0x02,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; 0x9F, 0x30, 0x40, 0x9F,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; 0x9F, 0x32, 0x40, 0x00,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; 0x9F, 0x33, 0x40, 0x0D,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; 0x9F, 0x35, 0x40, 0x00,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; 0x9F, 0x36, 0x40, 0x0D&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;};&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;const byte data_seq2[] = { &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; 0x9F, 0x24, 0x40, 0x3D,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; 0x9F, 0x28, 0x40, 0x20,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; 0x9F, 0x29, 0x40, 0x95,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; 0x9F, 0x30, 0x40, 0xFF,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; 0x9F, 0x32, 0x40, 0x03,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; 0x9F, 0x33, 0x40, 0xE8,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; 0x9F, 0x35, 0x40, 0x03,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; 0x9F, 0x36, 0x40, 0xE8&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;};&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;//-----------------------------------------------------------------------------&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;void main(void)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; SPI_init();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; EnableInterrupts;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Globally enable interrupts&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; SPI_selectChip( true, 0);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Enable SPI slave device&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; SPI_send_start( 27);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Start send sequence&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; while (buf_count)&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 send sequence completed&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __RESET_WATCHDOG();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; SPI_selectChip( false, 0);&amp;nbsp;&amp;nbsp;&amp;nbsp; // Disable SPI slave device&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; for( ; ; )&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __RESET_WATCHDOG();&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; }&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;} &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;//-----------------------------------------------------------------------------&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;// Start SPI send sequence&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;void SPI_send_start( byte takt)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; if (takt == 27)&amp;nbsp; pntr = data_seq1;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; if (takt == 26)&amp;nbsp; pntr = data_seq2;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; if (takt) { &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (SPI1S_SPTEF == 0);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPI1D = *pntr++;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Send first byte of sequence&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; buf_count = 31;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPI_Interrupt( true);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Enable SPRF interrupts&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; else&amp;nbsp; buf_count = 0;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;//-----------------------------------------------------------------------------&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;// Interrupt functions:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;__interrupt VectorNumber_Vspi1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;void ISR_SPI( void)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; (void)SPI1S;&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; // Clear SPRF flag&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; (void)SPI1D;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; if (buf_count) {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPI1D = *pntr++;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; buf_count--;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp; else&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPI_Interrupt( false);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Disable SPI interrupts&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Mac&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 02 Aug 2013 14:25:00 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/Overwritten-memory-MC9S08AW60/m-p/234575#M19469</guid>
      <dc:creator>bigmac</dc:creator>
      <dc:date>2013-08-02T14:25:00Z</dc:date>
    </item>
  </channel>
</rss>

