<?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 Adc Sampling running out of memory? in Kinetis Microcontrollers</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Adc-Sampling-running-out-of-memory/m-p/826965#M49977</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 am trying to make a basic filter for ADC measurements. The idea is provide the average of previous 1000 samples as an output. To store the samples I have used a circular buffer with 1000 elements. When a new element is added the last element is removed; this way I always have stored last 1000 ADC samples so I can easily get the average.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The problems is that I will have to store samples for multiple ADC channnels. For 10 ADc channels would be 10 * 1000 samples/channel = 10k samples stored in memory at any moment of time.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have made my program and it works only when I initialize buffers with only 10 samples (or less) per channel. When I use a bigger number of samples the program is just failing to start. I suspect that I am running out of memory.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Initial memory configuration was:&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;P&gt;HEAP_SIZE&amp;nbsp; = DEFINED(__heap_size__)&amp;nbsp; ? __heap_size__&amp;nbsp; : &lt;STRONG&gt;0x00000100&lt;/STRONG&gt;;&lt;BR /&gt;STACK_SIZE = DEFINED(__stack_size__) ? __stack_size__ : &lt;STRONG&gt;0x00000100&lt;/STRONG&gt;;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* Specify the memory areas */&lt;BR /&gt;MEMORY&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp; m_interrupts&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (RX)&amp;nbsp; : ORIGIN = 0x00000000, LENGTH = 0x00000100&lt;BR /&gt;&amp;nbsp; m_flash_config&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (RX)&amp;nbsp; : ORIGIN = 0x00000400, LENGTH = 0x00000010&lt;BR /&gt;&amp;nbsp; m_text&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; (RX)&amp;nbsp; : ORIGIN = 0x00000410, LENGTH = 0x0000FBF0&lt;BR /&gt;&amp;nbsp; m_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;&amp;nbsp;&amp;nbsp; (RW)&amp;nbsp; : ORIGIN = 0x1FFFFC00, LENGTH = &lt;STRONG&gt;0x00010000&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And I have tried to change into something like this:&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;P&gt;HEAP_SIZE&amp;nbsp; = DEFINED(__heap_size__)&amp;nbsp; ? __heap_size__&amp;nbsp; : &lt;STRONG&gt;0x0000FFFF&lt;/STRONG&gt;;&lt;BR /&gt;STACK_SIZE = DEFINED(__stack_size__) ? __stack_size__ : &lt;STRONG&gt;0x00000200&lt;/STRONG&gt;;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* Specify the memory areas */&lt;BR /&gt;MEMORY&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp; m_interrupts&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (RX)&amp;nbsp; : ORIGIN = 0x00000000, LENGTH = 0x00000100&lt;BR /&gt;&amp;nbsp; m_flash_config&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (RX)&amp;nbsp; : ORIGIN = 0x00000400, LENGTH = 0x00000010&lt;BR /&gt;&amp;nbsp; m_text&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; (RX)&amp;nbsp; : ORIGIN = 0x00000410, LENGTH = 0x0000FBF0&lt;BR /&gt;&amp;nbsp; m_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;&amp;nbsp;&amp;nbsp; (RW)&amp;nbsp; : ORIGIN = 0x1FFFFC00, LENGTH = &lt;STRONG&gt;0x0001FFFF&lt;/STRONG&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;But with this configuration it won't work even with 10 samples/channel.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And the thing is that the project is also using functions like printf() which requires a pretty high amount of memory.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The question is: How do I increase memory to it's maximum limits?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Microcontroller used: Kinetis &lt;STRONG&gt;SKEAZN642&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;I have also attached the project in case it helps.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 12 Nov 2018 10:16:05 GMT</pubDate>
    <dc:creator>curiosul</dc:creator>
    <dc:date>2018-11-12T10:16:05Z</dc:date>
    <item>
      <title>Adc Sampling running out of memory?</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Adc-Sampling-running-out-of-memory/m-p/826965#M49977</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 am trying to make a basic filter for ADC measurements. The idea is provide the average of previous 1000 samples as an output. To store the samples I have used a circular buffer with 1000 elements. When a new element is added the last element is removed; this way I always have stored last 1000 ADC samples so I can easily get the average.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The problems is that I will have to store samples for multiple ADC channnels. For 10 ADc channels would be 10 * 1000 samples/channel = 10k samples stored in memory at any moment of time.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have made my program and it works only when I initialize buffers with only 10 samples (or less) per channel. When I use a bigger number of samples the program is just failing to start. I suspect that I am running out of memory.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Initial memory configuration was:&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;P&gt;HEAP_SIZE&amp;nbsp; = DEFINED(__heap_size__)&amp;nbsp; ? __heap_size__&amp;nbsp; : &lt;STRONG&gt;0x00000100&lt;/STRONG&gt;;&lt;BR /&gt;STACK_SIZE = DEFINED(__stack_size__) ? __stack_size__ : &lt;STRONG&gt;0x00000100&lt;/STRONG&gt;;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* Specify the memory areas */&lt;BR /&gt;MEMORY&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp; m_interrupts&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (RX)&amp;nbsp; : ORIGIN = 0x00000000, LENGTH = 0x00000100&lt;BR /&gt;&amp;nbsp; m_flash_config&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (RX)&amp;nbsp; : ORIGIN = 0x00000400, LENGTH = 0x00000010&lt;BR /&gt;&amp;nbsp; m_text&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; (RX)&amp;nbsp; : ORIGIN = 0x00000410, LENGTH = 0x0000FBF0&lt;BR /&gt;&amp;nbsp; m_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;&amp;nbsp;&amp;nbsp; (RW)&amp;nbsp; : ORIGIN = 0x1FFFFC00, LENGTH = &lt;STRONG&gt;0x00010000&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And I have tried to change into something like this:&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;P&gt;HEAP_SIZE&amp;nbsp; = DEFINED(__heap_size__)&amp;nbsp; ? __heap_size__&amp;nbsp; : &lt;STRONG&gt;0x0000FFFF&lt;/STRONG&gt;;&lt;BR /&gt;STACK_SIZE = DEFINED(__stack_size__) ? __stack_size__ : &lt;STRONG&gt;0x00000200&lt;/STRONG&gt;;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* Specify the memory areas */&lt;BR /&gt;MEMORY&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp; m_interrupts&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (RX)&amp;nbsp; : ORIGIN = 0x00000000, LENGTH = 0x00000100&lt;BR /&gt;&amp;nbsp; m_flash_config&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (RX)&amp;nbsp; : ORIGIN = 0x00000400, LENGTH = 0x00000010&lt;BR /&gt;&amp;nbsp; m_text&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; (RX)&amp;nbsp; : ORIGIN = 0x00000410, LENGTH = 0x0000FBF0&lt;BR /&gt;&amp;nbsp; m_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;&amp;nbsp;&amp;nbsp; (RW)&amp;nbsp; : ORIGIN = 0x1FFFFC00, LENGTH = &lt;STRONG&gt;0x0001FFFF&lt;/STRONG&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;But with this configuration it won't work even with 10 samples/channel.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And the thing is that the project is also using functions like printf() which requires a pretty high amount of memory.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The question is: How do I increase memory to it's maximum limits?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Microcontroller used: Kinetis &lt;STRONG&gt;SKEAZN642&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;I have also attached the project in case it helps.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 12 Nov 2018 10:16:05 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Adc-Sampling-running-out-of-memory/m-p/826965#M49977</guid>
      <dc:creator>curiosul</dc:creator>
      <dc:date>2018-11-12T10:16:05Z</dc:date>
    </item>
    <item>
      <title>Re: Adc Sampling running out of memory?</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Adc-Sampling-running-out-of-memory/m-p/826966#M49978</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Alex&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The KEA64 has maximum 4k SRAM so I think that you will need to use something like an IIR low pass filter (requiring only a couple of bytes of storage per channel) to do the averaging rather than long buffers in RAM (which would avoid you needing to solve the RAM setup too).&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Mark&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 12 Nov 2018 14:09:10 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Adc-Sampling-running-out-of-memory/m-p/826966#M49978</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2018-11-12T14:09:10Z</dc:date>
    </item>
  </channel>
</rss>

