<?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: ISR for DMA Transfer of UART data in ColdFire/68K Microcontrollers and Processors</title>
    <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/ISR-for-DMA-Transfer-of-UART-data/m-p/175934#M6851</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I solved this some time ago.&amp;nbsp; Attached is functional source code to configure the DMA channels to save UART RXD characters to memory.&amp;nbsp; You might be able to use this as a template.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Dogbert&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 14 Feb 2012 12:04:46 GMT</pubDate>
    <dc:creator>Dogbert256</dc:creator>
    <dc:date>2012-02-14T12:04:46Z</dc:date>
    <item>
      <title>ISR for DMA Transfer of UART data</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/ISR-for-DMA-Transfer-of-UART-data/m-p/175932#M6849</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN style=": ; color: #008000; font-size: 2;"&gt;Hello,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN style=": ; color: #008000; font-size: 2;"&gt;I'm trying to get DMA Channel 0 to transfer 16 bytes&amp;nbsp;from the&amp;nbsp;UART 0&amp;nbsp;Receive channel to memory.&amp;nbsp; The configuration of the&amp;nbsp;DMA is&amp;nbsp;in the attached&amp;nbsp;file (view using WordPad).&amp;nbsp;&amp;nbsp;The UART is working fine.&amp;nbsp; DMA&amp;nbsp;transfer is **almost** working fine.&amp;nbsp; I connect my UART channel to a PC running Windows Hyperterminal.&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN style=": ; color: #008000; font-size: 2;"&gt;I then manually type in characters, and have the CPU spit&amp;nbsp;out the characters&amp;nbsp;to&amp;nbsp;UART 0 Transmit (also going to&amp;nbsp;Hyperterminal).&amp;nbsp; I've&amp;nbsp;created a&amp;nbsp;**mock** DMA Channel 0 ISR (below code).&amp;nbsp; This is behavior I notice:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN style=": ; color: #008000; font-size: 2;"&gt;When the DMA&amp;nbsp;Channel is initialized or re-enabled with the below&amp;nbsp;**mock** ISR, it will always&amp;nbsp;immediately transfer 1 byte from the UART to&amp;nbsp;memory, regardless of&amp;nbsp;whether the UART actually sent any data.&amp;nbsp;&amp;nbsp;It works&amp;nbsp;as normal for the other 15 bytes.&amp;nbsp; So the question is, why does the DMA spit out this first erroneous&amp;nbsp;byte of data?&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN style=": ; color: #008000; font-size: 2;"&gt;&amp;nbsp;&amp;nbsp; // Mock DMA Channel 0 finished ISR&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #008000; font-size: 2;"&gt;&amp;nbsp;&amp;nbsp; // Check DONE bit in DSRn&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style=": ; color: #7F0055; font-size: 2;"&gt;&amp;nbsp;&amp;nbsp; if&lt;/STRONG&gt;&lt;SPAN style=": ; font-size: 2;"&gt;(MCF_DMA_DSR(0) &amp;amp; 0x01)&lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/P&gt;&lt;P&gt;&lt;SPAN style=": ; color: #008000; font-size: 2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style=": ; color: #008000; font-size: 2;"&gt;// Configure DMAREQ Register to disable DMA Channel 0&lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MCF_SCM_DMAREQC &amp;amp;= 0xFFFFFFF0;&lt;/P&gt;&lt;P&gt;&lt;SPAN style=": ; color: #008000; font-size: 2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Clear DSRn Register with DONE bit logic 1&lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MCF_DMA_DSR(0) = 0x01;&lt;/P&gt;&lt;P&gt;&lt;SPAN style=": ; color: #008000; font-size: 2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Clear UART errors with UCRn Register&lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MCF_UART_UCR(0) = 0x40;&lt;/P&gt;&lt;P&gt;&lt;SPAN style=": ; color: #008000; font-size: 2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Place absolute memory address (destination address) into DARn Register&lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MCF_DMA_DAR(0) = (&lt;STRONG style=": ; color: #7F0055; font-size: 2;"&gt;unsigned&lt;/STRONG&gt; &lt;STRONG style=": ; color: #7F0055; font-size: 2;"&gt;long&lt;/STRONG&gt; &lt;STRONG style=": ; color: #7F0055; font-size: 2;"&gt;int&lt;/STRONG&gt;&lt;SPAN style=": ; font-size: 2;"&gt;) &amp;amp;UART0_rxd[0];&lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style=": ; color: #008000; font-size: 2;"&gt;// Place number of bytes to transfer into BCRn Register&lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MCF_DMA_BCR(0) = DMA_BYTE_count[0];&lt;/P&gt;&lt;P&gt;&lt;SPAN style=": ; color: #008000; font-size: 2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Configure DMAREQ Register to enable DMA Channel 0&lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MCF_SCM_DMAREQC |= 0x00000008;&lt;/P&gt;&lt;P&gt;&lt;SPAN style=": ; color: #008000; font-size: 2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Restart DMA channel with START bit logic 1 in DCRn Register&lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MCF_DMA_DCR(0) |= 0x00010000;&lt;/P&gt;&lt;P align="left"&gt;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P align="left"&gt;&amp;nbsp;&lt;/P&gt;&lt;P align="left"&gt;&lt;SPAN style="color: #008000;"&gt;Why does this **always** spit out an erroneous first byte?&lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left"&gt;&amp;nbsp;&lt;/P&gt;&lt;P align="left"&gt;&lt;SPAN style="color: #008000;"&gt;Dogbert&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 21 Oct 2011 11:54:21 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/ISR-for-DMA-Transfer-of-UART-data/m-p/175932#M6849</guid>
      <dc:creator>Dogbert256</dc:creator>
      <dc:date>2011-10-21T11:54:21Z</dc:date>
    </item>
    <item>
      <title>Re: ISR for DMA Transfer of UART data</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/ISR-for-DMA-Transfer-of-UART-data/m-p/175933#M6850</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Processor is MCF5232&lt;/P&gt;&lt;P&gt;CodeWarriors V10.0&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Dogbert&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 21 Oct 2011 11:55:43 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/ISR-for-DMA-Transfer-of-UART-data/m-p/175933#M6850</guid>
      <dc:creator>Dogbert256</dc:creator>
      <dc:date>2011-10-21T11:55:43Z</dc:date>
    </item>
    <item>
      <title>Re: ISR for DMA Transfer of UART data</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/ISR-for-DMA-Transfer-of-UART-data/m-p/175934#M6851</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I solved this some time ago.&amp;nbsp; Attached is functional source code to configure the DMA channels to save UART RXD characters to memory.&amp;nbsp; You might be able to use this as a template.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Dogbert&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 14 Feb 2012 12:04:46 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/ISR-for-DMA-Transfer-of-UART-data/m-p/175934#M6851</guid>
      <dc:creator>Dogbert256</dc:creator>
      <dc:date>2012-02-14T12:04:46Z</dc:date>
    </item>
    <item>
      <title>Re: ISR for DMA Transfer of UART data</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/ISR-for-DMA-Transfer-of-UART-data/m-p/175935#M6852</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Please submit &lt;SPAN&gt;source files in&amp;nbsp;&lt;/SPAN&gt;standard unformatted form .. this is basically unreadable with your editors formatting codes.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 19 Apr 2012 20:12:31 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/ISR-for-DMA-Transfer-of-UART-data/m-p/175935#M6852</guid>
      <dc:creator>dszimmer</dc:creator>
      <dc:date>2012-04-19T20:12:31Z</dc:date>
    </item>
    <item>
      <title>Re: ISR for DMA Transfer of UART data</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/ISR-for-DMA-Transfer-of-UART-data/m-p/175936#M6853</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&amp;gt; this is basically unreadable with your editors formatting codes&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Trivially easy to fix. Open in Wordpad and "save as plain txt".&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Tom&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 19 Apr 2012 21:22:39 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/ISR-for-DMA-Transfer-of-UART-data/m-p/175936#M6853</guid>
      <dc:creator>TomE</dc:creator>
      <dc:date>2012-04-19T21:22:39Z</dc:date>
    </item>
  </channel>
</rss>

