<?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: Half Complete flag bug in DMAChannel_LDD in Processor Expert Software</title>
    <link>https://community.nxp.com/t5/Processor-Expert-Software/Half-Complete-flag-bug-in-DMAChannel-LDD/m-p/258729#M1597</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;Yes, we confirm that it's a bug, this option doesn't work properly. We are working on the fix for the next release.&lt;/P&gt;&lt;P&gt;We are sorry for an inconvenience. For now, the following workaround can be applied:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE cellpadding="0" cellspacing="0" style="width: 100%;"&gt;&lt;TBODY&gt;&lt;TR valign="top"&gt;&lt;TD width="100%"&gt;&lt;DIV class="cqFormEdit"&gt;&lt;DIV class="cqReadonlyControl dijitTextBoxFocused dijitFocused dijitTextBox"&gt;&lt;DIV&gt;1) Set properties according to your request. &lt;BR /&gt;2) Enable GetTransferCompleteStatus() method generation. &lt;BR /&gt;3) Generate code&lt;P&gt;&lt;/P&gt;4)Disable generation of DMAChannel_LDD and DMAController components using the context (pop-up) menu option Code geration &amp;gt; Don't Write Generated Code Modules.&lt;P&gt;&lt;/P&gt;&lt;DIV&gt;5) Open DMACH1.c generated&amp;nbsp; by DMAChannnel_LDD component&lt;/DIV&gt;&lt;DIV&gt;&lt;BR /&gt;6) Find DMA1_TChnInit const DMACH1_ChInit structure and &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; add DMA_CSR_INTHALF_MASK constant to the&amp;nbsp; TCD_CSR register initial value item. &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (see attached picture)&lt;/DIV&gt;&lt;P&gt;&lt;/P&gt;&lt;DIV&gt;7) Open DMA1.c generated by DMAController component.&lt;/DIV&gt;&lt;DIV&gt;&lt;BR /&gt;8) Find static void HandleInterrupt(DMA1_TChnDevData *ChnDevDataPtr) and &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; add following code after last "} else {" statement: (see attached picture)&lt;/DIV&gt;&lt;P&gt;&lt;/P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMA1__ClearChannelInterruptFlag(DmaMemMapPtr, ChnDevConstPtr-&amp;gt;PhyChnNum); &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (ChnDevDataPtr-&amp;gt;Events.OnCompleteFnPtr != NULL) { &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ChnDevDataPtr-&amp;gt;Events.OnCompleteFnPtr(ChnDevDataPtr-&amp;gt;UserDataPtr); &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;P&gt;&lt;/P&gt;9) In DMACH1_OnComplete() event you can use following code in order to distinguish "Full complete" and "Half complete" event.&lt;P&gt;&lt;/P&gt;void DMACH1_OnComplete(LDD_TUserData *UserDataPtr) &lt;BR /&gt;{ &lt;BR /&gt;&amp;nbsp; if (DMACH1_GetTransferCompleteStatus(hDmaChn) == FALSE) { &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* FullComplete = FALSE;&amp;nbsp;&amp;nbsp;&amp;nbsp; HalfComplete = TRUE;&amp;nbsp; */ &lt;BR /&gt;&amp;nbsp; } else { &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* FullComplete = TRUE;&amp;nbsp;&amp;nbsp;&amp;nbsp; HalfComplete = FALSE;&amp;nbsp; */ &lt;BR /&gt;&amp;nbsp; } &lt;BR /&gt;}&lt;P&gt;&lt;/P&gt;&lt;DIV&gt;Note: If interrupts are disabled or your code doesn't handle OnComplete event before all data are transferred by DMA peripheral, OnComplete event will be invoked only once and GetTransferCompleteStatus() called from this event will always return TRUE = "Full complete".&lt;/DIV&gt;&lt;DIV&gt; &lt;/DIV&gt;&lt;DIV&gt;&lt;P&gt;Best regards&lt;/P&gt;&lt;P&gt;Petr Hradsky&lt;/P&gt;&lt;P&gt;Processor Expert Support Team&lt;/P&gt;&lt;/DIV&gt;&lt;DIV&gt; &lt;/DIV&gt;&lt;P&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/TD&gt;&lt;TD valign="top"&gt;&lt;P&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 11 Mar 2014 16:26:29 GMT</pubDate>
    <dc:creator>Petr_H</dc:creator>
    <dc:date>2014-03-11T16:26:29Z</dc:date>
    <item>
      <title>Half Complete flag bug in DMAChannel_LDD</title>
      <link>https://community.nxp.com/t5/Processor-Expert-Software/Half-Complete-flag-bug-in-DMAChannel-LDD/m-p/258728#M1596</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;looks like setting "Initialization-&amp;gt;Half complete" to Enabled does &lt;STRONG&gt;not&lt;/STRONG&gt; OR in DMA_CSR_INTHALF_MASK as it should.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 25 Feb 2014 20:36:23 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Processor-Expert-Software/Half-Complete-flag-bug-in-DMAChannel-LDD/m-p/258728#M1596</guid>
      <dc:creator>bowerymarc</dc:creator>
      <dc:date>2014-02-25T20:36:23Z</dc:date>
    </item>
    <item>
      <title>Re: Half Complete flag bug in DMAChannel_LDD</title>
      <link>https://community.nxp.com/t5/Processor-Expert-Software/Half-Complete-flag-bug-in-DMAChannel-LDD/m-p/258729#M1597</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;Yes, we confirm that it's a bug, this option doesn't work properly. We are working on the fix for the next release.&lt;/P&gt;&lt;P&gt;We are sorry for an inconvenience. For now, the following workaround can be applied:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE cellpadding="0" cellspacing="0" style="width: 100%;"&gt;&lt;TBODY&gt;&lt;TR valign="top"&gt;&lt;TD width="100%"&gt;&lt;DIV class="cqFormEdit"&gt;&lt;DIV class="cqReadonlyControl dijitTextBoxFocused dijitFocused dijitTextBox"&gt;&lt;DIV&gt;1) Set properties according to your request. &lt;BR /&gt;2) Enable GetTransferCompleteStatus() method generation. &lt;BR /&gt;3) Generate code&lt;P&gt;&lt;/P&gt;4)Disable generation of DMAChannel_LDD and DMAController components using the context (pop-up) menu option Code geration &amp;gt; Don't Write Generated Code Modules.&lt;P&gt;&lt;/P&gt;&lt;DIV&gt;5) Open DMACH1.c generated&amp;nbsp; by DMAChannnel_LDD component&lt;/DIV&gt;&lt;DIV&gt;&lt;BR /&gt;6) Find DMA1_TChnInit const DMACH1_ChInit structure and &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; add DMA_CSR_INTHALF_MASK constant to the&amp;nbsp; TCD_CSR register initial value item. &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (see attached picture)&lt;/DIV&gt;&lt;P&gt;&lt;/P&gt;&lt;DIV&gt;7) Open DMA1.c generated by DMAController component.&lt;/DIV&gt;&lt;DIV&gt;&lt;BR /&gt;8) Find static void HandleInterrupt(DMA1_TChnDevData *ChnDevDataPtr) and &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; add following code after last "} else {" statement: (see attached picture)&lt;/DIV&gt;&lt;P&gt;&lt;/P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMA1__ClearChannelInterruptFlag(DmaMemMapPtr, ChnDevConstPtr-&amp;gt;PhyChnNum); &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (ChnDevDataPtr-&amp;gt;Events.OnCompleteFnPtr != NULL) { &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ChnDevDataPtr-&amp;gt;Events.OnCompleteFnPtr(ChnDevDataPtr-&amp;gt;UserDataPtr); &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;P&gt;&lt;/P&gt;9) In DMACH1_OnComplete() event you can use following code in order to distinguish "Full complete" and "Half complete" event.&lt;P&gt;&lt;/P&gt;void DMACH1_OnComplete(LDD_TUserData *UserDataPtr) &lt;BR /&gt;{ &lt;BR /&gt;&amp;nbsp; if (DMACH1_GetTransferCompleteStatus(hDmaChn) == FALSE) { &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* FullComplete = FALSE;&amp;nbsp;&amp;nbsp;&amp;nbsp; HalfComplete = TRUE;&amp;nbsp; */ &lt;BR /&gt;&amp;nbsp; } else { &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* FullComplete = TRUE;&amp;nbsp;&amp;nbsp;&amp;nbsp; HalfComplete = FALSE;&amp;nbsp; */ &lt;BR /&gt;&amp;nbsp; } &lt;BR /&gt;}&lt;P&gt;&lt;/P&gt;&lt;DIV&gt;Note: If interrupts are disabled or your code doesn't handle OnComplete event before all data are transferred by DMA peripheral, OnComplete event will be invoked only once and GetTransferCompleteStatus() called from this event will always return TRUE = "Full complete".&lt;/DIV&gt;&lt;DIV&gt; &lt;/DIV&gt;&lt;DIV&gt;&lt;P&gt;Best regards&lt;/P&gt;&lt;P&gt;Petr Hradsky&lt;/P&gt;&lt;P&gt;Processor Expert Support Team&lt;/P&gt;&lt;/DIV&gt;&lt;DIV&gt; &lt;/DIV&gt;&lt;P&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/TD&gt;&lt;TD valign="top"&gt;&lt;P&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 11 Mar 2014 16:26:29 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Processor-Expert-Software/Half-Complete-flag-bug-in-DMAChannel-LDD/m-p/258729#M1597</guid>
      <dc:creator>Petr_H</dc:creator>
      <dc:date>2014-03-11T16:26:29Z</dc:date>
    </item>
    <item>
      <title>Re: Half Complete flag bug in DMAChannel_LDD</title>
      <link>https://community.nxp.com/t5/Processor-Expert-Software/Half-Complete-flag-bug-in-DMAChannel-LDD/m-p/258730#M1598</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks Petr for verifying.&lt;/P&gt;&lt;P&gt;You forgot to attach the picture...&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 11 Mar 2014 19:34:19 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Processor-Expert-Software/Half-Complete-flag-bug-in-DMAChannel-LDD/m-p/258730#M1598</guid>
      <dc:creator>bowerymarc</dc:creator>
      <dc:date>2014-03-11T19:34:19Z</dc:date>
    </item>
    <item>
      <title>Re: Half Complete flag bug in DMAChannel_LDD</title>
      <link>https://community.nxp.com/t5/Processor-Expert-Software/Half-Complete-flag-bug-in-DMAChannel-LDD/m-p/258731#M1599</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I'm sorry, you are right, here it is:&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="DMA_HalfComplete_Fix.jpg"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/43173i384340BC1B12031A/image-size/large?v=v2&amp;amp;px=999" role="button" title="DMA_HalfComplete_Fix.jpg" alt="DMA_HalfComplete_Fix.jpg" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #1f497d; font-size: 12pt; font-family: Calibri,Arial Rounded MT Bold;"&gt;&lt;SPAN lang="EN"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left" dir="ltr"&gt;Best regards&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P align="left" dir="ltr"&gt;Petr Hradsky&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P align="left" dir="ltr"&gt;Processor Expert Support Team&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 13 Mar 2014 15:26:49 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Processor-Expert-Software/Half-Complete-flag-bug-in-DMAChannel-LDD/m-p/258731#M1599</guid>
      <dc:creator>Petr_H</dc:creator>
      <dc:date>2014-03-13T15:26:49Z</dc:date>
    </item>
    <item>
      <title>Re: Half Complete flag bug in DMAChannel_LDD</title>
      <link>https://community.nxp.com/t5/Processor-Expert-Software/Half-Complete-flag-bug-in-DMAChannel-LDD/m-p/258732#M1600</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;It's been 3 years and the component doesn't seem to be fixed yet. &amp;nbsp;Was there a release that I missed? &amp;nbsp;I'm running CW 10.7, and the component shows up as version 01.051.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Scott&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 29 Jun 2017 15:46:22 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Processor-Expert-Software/Half-Complete-flag-bug-in-DMAChannel-LDD/m-p/258732#M1600</guid>
      <dc:creator>scottm</dc:creator>
      <dc:date>2017-06-29T15:46:22Z</dc:date>
    </item>
  </channel>
</rss>

