2 Replies Latest reply on May 13, 2016 7:04 AM by user_1377889

    Half-Duplex UART does not work

    user_460425683

      Hi,

         

      I am trying to use the UART (UDB based) in Half-Duplex mode.  I am finding that it will not compile with the following error:

         

      Error: plm.M0046: E2071: Unable to pack the design into 4 UDBs. See the Digital Placement section of the report file for details. For additional assistance, see the Mapper, Placer, Router section in the PSoC Creator help.
      Error: plm.M0046: E2055: An error occurred during placement of the design.

         

      If I change that UART to Full, it compiles without a problem.

         

      I am unable to use the SCB UART and the Full UART does not leave enough resources for my other components.

         

      Attached is a project which demonstrates this issue on the CYBLE-014008-00 PSOC 4.  It only has a single UART component and main.c does nothing.

         

      Thoughts?

         

      - Chris

        • 1. Re: Half-Duplex UART does not work
          user_460425683

          Sometimes it helps to click on the magnifying glass.  I am not sure if this solution is going to work, but I will try it and report back.  It seems odd that this component would not work out of the box.

             

          The placer is not able to place all of the carry chains without backtracking. It fills one UDB bank to 15/16 and the other to 7/8 and cannot place the final 2-datapath chain. As a workaround, add a control file to the TopDesign component (in Workspace Explorer's Components tab) with the following lines: ATTRIBUTE placement_force OF \Timer_ADPActiveTime:TimerUDB:sT16:timerdp:u0\ : LABEL IS "U(2,0)"; ATTRIBUTE placement_force OF \Timer_OutputPeriod:TimerUDB:sT24:timerdp:u0\ : LABEL IS "U(3,1)"; ATTRIBUTE placement_force OF \Timer_OutputActiveTime:TimerUDB:sT24:timerdp:u0\ : LABEL IS "U(0,1)"; This will fill the datapaths in the second UDB bank and allow the placer to assign the remaining datapaths.

          • 2. Re: Half-Duplex UART does not work
            user_460425683

            Creating the component file with these lines:

               

            ATTRIBUTE placement_force OF \Timer_ADPActiveTime:TimerUDB:sT16:timerdp:u0\ : LABEL IS "U(2,0)"; 
            ATTRIBUTE placement_force OF \Timer_OutputPeriod:TimerUDB:sT24:timerdp:u0\ : LABEL IS "U(3,1)"; 
            ATTRIBUTE placement_force OF \Timer_OutputActiveTime:TimerUDB:sT24:timerdp:u0\ : LABEL IS "U(0,1)";

               

            Does not appear to resolve or change the problem.  It is possible I am not creating it properly.  I created a "TopDesign.ctl" file with those three lines and it appears on the Components Tab, under the TopDesign component.

               

            Any ideas would be appreciated.  Thanks.

               

            - Chris

            • 3. Re: Half-Duplex UART does not work
              user_1377889

              Use full duplex, that will compile.

                 

               

                 

              Bob