<?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 Re: Kwikstik audioscope demo question in Kinetis Microcontrollers</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Kwikstik-audioscope-demo-question/m-p/374258#M19563</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Hui_Ma,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you for your time and effort in analyzing this issue. &lt;/P&gt;&lt;P&gt;My understanding also points to a solution on the line of yours.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I think then it remains to find a means to reach the responsible(s) for this example in Freescale to have it corrected in the download area.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Again, thanks and best regards,&lt;/P&gt;&lt;P&gt;--&lt;/P&gt;&lt;P&gt;Cesar Rabak&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 02 Dec 2014 11:35:07 GMT</pubDate>
    <dc:creator>cesarrabak</dc:creator>
    <dc:date>2014-12-02T11:35:07Z</dc:date>
    <item>
      <title>Kwikstik audioscope demo question</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Kwikstik-audioscope-demo-question/m-p/374254#M19559</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I'm studying the Kinetis KwikStik board (K40) and specially the audioscope demo.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;After an analysis of the producer consumer role of PE_ISR(DMA_ADC_DoneInterrupt) (in Events.c) and ShowData() (in ProcessorExpert.c), I think the implementation in this demo has a race condition where the display function reads the data pointed to be written by the ADC thus turning useless the intended double buffer mechanism:&lt;/P&gt;&lt;P&gt;This is the code for the interrupt service routine:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;PE_ISR(DMA_ADC_DoneInterrupt)&lt;/SPAN&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;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; /* Write your interrupt code here ... */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; // Clear all DMA interrupt flags&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; DMA_CINT = 0x40;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; // switch bufstart to other part of buffer&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; BufStart = ADC_BUFFER_SIZE - BufStart;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; // reset destination address&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; DMA_TCD0_DADDR = (uint32_t)&amp;amp;(MeasuredValues[BufStart]);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; // toggle pin&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; GPIO1_ToggleFieldBits(GPIOPtr, TST,1);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; // toggle flag&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; Measured = TRUE;&lt;/SPAN&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;In the routine above the setting of BufStart switches the start of the buffer to be written by the ADC and toggles the flag "Measured" to true which is tested in the main of ProcessorExpert.c:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The pertaining snippet of the code is the following:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (Measured) {&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cntr++;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // display only time after time &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (cntr &amp;gt; 10) {&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&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; // display data &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&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; ShowData();&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;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&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; cntr = 0; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // reset flag &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Measured = FALSE;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The call to ShowData() is only made if the flag "Measured" is true, this procedure has the following code:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; &lt;SPAN style="font-family: 'courier new', courier;"&gt;for (i=0; i&amp;lt;37; i++) {&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; val = MeasuredValues[BufStart+i];&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sum += val;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // substract last average &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; val = val - LastAvg;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (val &amp;lt; -150) {&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pos = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else if (val &amp;lt; -90) {&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pos = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else if (val &amp;lt; -60) {&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pos = 2;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else if (val &amp;lt; -30) {&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pos = 3;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else if (val &amp;lt; 30) {&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pos = 4;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else if (val &amp;lt; 60) {&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pos = 5;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else if (val &amp;lt; 90) {&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pos = 6;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pos = 7;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So when this code is reached the for loop has the values addressed by MeasuredValues[BufStart+i] where BufStart already has been advanced to the (double) buffer region shared between the ADC DMA channel and this routine effectively reading the region which the ADC is writing to it.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Did I miss something or you agree with my understating?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;--&lt;/P&gt;&lt;P&gt;Cesar Rabak&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 27 Nov 2014 01:25:33 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Kwikstik-audioscope-demo-question/m-p/374254#M19559</guid>
      <dc:creator>cesarrabak</dc:creator>
      <dc:date>2014-11-27T01:25:33Z</dc:date>
    </item>
    <item>
      <title>Re: Kwikstik audioscope demo question</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Kwikstik-audioscope-demo-question/m-p/374255#M19560</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Cesar,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Could you guide me where to download that Kwikstik audioscope demo?&lt;/P&gt;&lt;P&gt;Then I will check the whole project source and provide the feedback.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Wish it helps.&lt;BR /&gt;best regards &lt;BR /&gt;Ma Hui&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;BR /&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 28 Nov 2014 03:47:34 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Kwikstik-audioscope-demo-question/m-p/374255#M19560</guid>
      <dc:creator>Hui_Ma</dc:creator>
      <dc:date>2014-11-28T03:47:34Z</dc:date>
    </item>
    <item>
      <title>Re: Kwikstik audioscope demo question</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Kwikstik-audioscope-demo-question/m-p/374256#M19561</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Hui_Ma,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks for the interest in my question.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The sources for this project can be downloaded from &lt;A href="http://cache.freescale.com/files/32bit/doc/app_note/AN4688SW.ZIP"&gt;http://cache.freescale.com/files/32bit/doc/app_note/AN4688SW.ZIP&lt;/A&gt;. You may also be interested in the Application Note that describes this SW &lt;A href="http://cache.freescale.com/files/32bit/doc/app_note/AN4688.pdf"&gt;http://cache.freescale.com/files/32bit/doc/app_note/AN4688.pdf&lt;/A&gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;--&lt;/P&gt;&lt;P&gt;Cesar Rabak&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 29 Nov 2014 00:54:51 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Kwikstik-audioscope-demo-question/m-p/374256#M19561</guid>
      <dc:creator>cesarrabak</dc:creator>
      <dc:date>2014-11-29T00:54:51Z</dc:date>
    </item>
    <item>
      <title>Re: Kwikstik audioscope demo question</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Kwikstik-audioscope-demo-question/m-p/374257#M19562</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Cesar Rabak,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Customer could check the double buffer definition at &amp;lt;ProcessorExpert.c&amp;gt; below:&lt;/P&gt;&lt;P&gt;// double buffer for values. One half will be filled and the other ready to be displayed&amp;nbsp; &lt;/P&gt;&lt;P&gt;uint16_t MeasuredValues[2*ADC_BUFFER_SIZE];&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I think your comments is correct. &lt;/P&gt;&lt;P&gt;For the BufStart value changed at eDMA major loop done interrupt ISR and the new Bufstart is point to the region ADC conversion value will write to.&lt;/P&gt;&lt;P&gt;When, it called ShowData() value is using the same region with ADC value will write to.&lt;/P&gt;&lt;P&gt;The fixed way is to set a new variable to get current available data region start:&lt;/P&gt;&lt;P&gt;volatile uint16_t DataStart;&lt;/P&gt;&lt;P&gt;And in ShowData() function, it need use DataStart instead of BufStart.&lt;/P&gt;&lt;P&gt;&amp;nbsp; DataStart = ADC_BUFFER_SIZE - BufStart;&lt;/P&gt;&lt;P&gt;&amp;nbsp; for (i=0; i&amp;lt;37; i++) {&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; val = MeasuredValues[DataStart+i];&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sum += val;&lt;/P&gt;&lt;P&gt;&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; &lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Wish it helps.&lt;BR /&gt;best regards &lt;BR /&gt;Ma Hui&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;BR /&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 02 Dec 2014 06:08:00 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Kwikstik-audioscope-demo-question/m-p/374257#M19562</guid>
      <dc:creator>Hui_Ma</dc:creator>
      <dc:date>2014-12-02T06:08:00Z</dc:date>
    </item>
    <item>
      <title>Re: Kwikstik audioscope demo question</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Kwikstik-audioscope-demo-question/m-p/374258#M19563</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Hui_Ma,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you for your time and effort in analyzing this issue. &lt;/P&gt;&lt;P&gt;My understanding also points to a solution on the line of yours.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I think then it remains to find a means to reach the responsible(s) for this example in Freescale to have it corrected in the download area.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Again, thanks and best regards,&lt;/P&gt;&lt;P&gt;--&lt;/P&gt;&lt;P&gt;Cesar Rabak&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 02 Dec 2014 11:35:07 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Kwikstik-audioscope-demo-question/m-p/374258#M19563</guid>
      <dc:creator>cesarrabak</dc:creator>
      <dc:date>2014-12-02T11:35:07Z</dc:date>
    </item>
    <item>
      <title>Re: Kwikstik audioscope demo question</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Kwikstik-audioscope-demo-question/m-p/374259#M19564</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;HUi_Ma,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Just for the sake of completeness, I think the solution to the race problem is:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Have the variable at file ("global") scope in ProcessoExpert.c:&lt;/P&gt;&lt;P style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; color: #3d3d3d;"&gt;uint16_t DataStart; // As this variable will be used only in the main loop not longer shared with the interrupt service routine&lt;/P&gt;&lt;P style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; color: #3d3d3d;"&gt;&lt;/P&gt;&lt;P style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; color: #3d3d3d;"&gt;The use of the variable with this scope will have it initialized to zero at the start of the program.&lt;/P&gt;&lt;P style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; color: #3d3d3d;"&gt;&lt;/P&gt;&lt;P style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; color: #3d3d3d;"&gt;And in ShowData() function, it need use DataStart instead of BufStart.&lt;/P&gt;&lt;P style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; color: #3d3d3d;"&gt;&lt;/P&gt;&lt;P style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; color: #3d3d3d;"&gt;The DataStart variable should be updated near the updating of the flag Measured in the infinite loop (in main() of ProcessorExpert.c)&lt;/P&gt;&lt;P style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; color: #3d3d3d;"&gt;&lt;/P&gt;&lt;P style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; color: #3d3d3d;"&gt;&amp;nbsp; DataStart = ADC_BUFFER_SIZE - &lt;SPAN style="color: #3d3d3d; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif;"&gt;&lt;STRONG&gt;DataStart&lt;/STRONG&gt;&lt;/SPAN&gt;; // if we had BufStart instead will keep the race condition!!&lt;/P&gt;&lt;P style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; color: #3d3d3d;"&gt;&lt;/P&gt;&lt;P style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; color: #3d3d3d;"&gt;Regards,&lt;/P&gt;&lt;P style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; color: #3d3d3d;"&gt;--&lt;/P&gt;&lt;P style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; color: #3d3d3d;"&gt;Cesar Rabak&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 02 Dec 2014 11:49:18 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Kwikstik-audioscope-demo-question/m-p/374259#M19564</guid>
      <dc:creator>cesarrabak</dc:creator>
      <dc:date>2014-12-02T11:49:18Z</dc:date>
    </item>
    <item>
      <title>Re: Kwikstik audioscope demo question</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Kwikstik-audioscope-demo-question/m-p/374260#M19565</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Cesar Rabak,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The uint16_t DataStart; variable definition scope within &amp;lt;ProcessorExpert.c&amp;gt; file.&lt;/P&gt;&lt;P&gt;Customer can define DataStart initialization value to 0, and there also ok to interval display ADC conversion data at MeasuredValues[] region with below code:&lt;/P&gt;&lt;P&gt;DataStart = ADC_BUFFER_SIZE - &lt;SPAN style="color: #3d3d3d; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif;"&gt;&lt;STRONG&gt;DataStart&lt;/STRONG&gt;&lt;/SPAN&gt;; // if we had BufStart instead will keep the race condition!!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Yes, I will notify the author to update related code.&lt;/P&gt;&lt;P&gt;Thank you for the direction.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Wish it helps.&lt;BR /&gt;best regards &lt;BR /&gt;Ma Hui&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;BR /&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 03 Dec 2014 02:33:59 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Kwikstik-audioscope-demo-question/m-p/374260#M19565</guid>
      <dc:creator>Hui_Ma</dc:creator>
      <dc:date>2014-12-03T02:33:59Z</dc:date>
    </item>
  </channel>
</rss>

