<?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: missing PORT_PCR_PS in Pull Select configuration in MCUXpresso Config Tools</title>
    <link>https://community.nxp.com/t5/MCUXpresso-Config-Tools/missing-PORT-PCR-PS-in-Pull-Select-configuration/m-p/831531#M583</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Guillaume Audirac&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;kPORT_PullDown and kPORT_PullUp were designed to not only select the pull resistor but also to enable the resistor itself. So if you use something like PORT_PCR_PS(kPORT_PullDown), it will only select the corresponding resistor, but it will not enable the resistor. I think this is why the Config tool doesn't use the Mask Macro to setup the internal resistor.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Hope it helps&lt;/P&gt;&lt;P&gt;Best regards&lt;/P&gt;&lt;P&gt;Jorge Alcala&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 23 Jul 2018 15:39:04 GMT</pubDate>
    <dc:creator>jorge_a_vazquez</dc:creator>
    <dc:date>2018-07-23T15:39:04Z</dc:date>
    <item>
      <title>missing PORT_PCR_PS in Pull Select configuration</title>
      <link>https://community.nxp.com/t5/MCUXpresso-Config-Tools/missing-PORT-PCR-PS-in-Pull-Select-configuration/m-p/831530#M582</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;When using the Config Tools v4.1 (MCUXpresso 10.2)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Conditions:&lt;/P&gt;&lt;PRE&gt;product: Pins v4.1
processor: MK64FN1M0xxx12
package_id: MK64FN1M0VMD12
mcu_data: ksdk2_0
processor_version: 4.0.0
board: FRDM-K64F&lt;/PRE&gt;&lt;P&gt;pin_mux.c extract:&lt;/P&gt;&lt;PRE&gt;/* PORTE26 (pin K4) is configured as PTE26 */
PORT_SetPinMux(BOARD_INITPINS_KW41_UART_RTS_PORT, BOARD_INITPINS_KW41_UART_RTS_PIN, kPORT_MuxAsGpio);

/* Interrupt configuration on PORTE26 (pin K4): Interrupt on rising edge */
PORT_SetPinInterruptConfig(BOARD_INITPINS_KW41_UART_RTS_PORT, BOARD_INITPINS_KW41_UART_RTS_PIN, kPORT_InterruptRisingEdge);

PORTE-&amp;gt;PCR[26] = ((PORTE-&amp;gt;PCR[26] &amp;amp;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Mask bits to zero which are setting */
&amp;nbsp;&amp;nbsp;&amp;nbsp; (~(PORT_PCR_PS_MASK | PORT_PCR_PE_MASK | PORT_PCR_PFE_MASK | PORT_PCR_ISF_MASK)))

&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Pull Select: Internal pulldown resistor is enabled on the corresponding pin, if the
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * corresponding PE field is set. */
&amp;nbsp;&amp;nbsp;&amp;nbsp; | (uint32_t)(kPORT_PullDown)

&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Passive Filter Enable: Passive input filter is enabled on the corresponding pin, if the
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * pin is configured as a digital input.
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * Refer to the device data sheet for filter characteristics. */
&amp;nbsp;&amp;nbsp;&amp;nbsp; | PORT_PCR_PFE(kPORT_PassiveFilterEnable));&lt;/PRE&gt;&lt;P&gt;Why "(uint32_t)(kPORT_PullDown)" and not "PORT_PCR_PS(kPORT_PullDown)"?&lt;/P&gt;&lt;P&gt;Even if it is functionaly identical, it creates some discrepancies in the pin_mux.c file.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 19 Jul 2018 12:46:20 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCUXpresso-Config-Tools/missing-PORT-PCR-PS-in-Pull-Select-configuration/m-p/831530#M582</guid>
      <dc:creator>GuillaumeAudirac</dc:creator>
      <dc:date>2018-07-19T12:46:20Z</dc:date>
    </item>
    <item>
      <title>Re: missing PORT_PCR_PS in Pull Select configuration</title>
      <link>https://community.nxp.com/t5/MCUXpresso-Config-Tools/missing-PORT-PCR-PS-in-Pull-Select-configuration/m-p/831531#M583</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Guillaume Audirac&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;kPORT_PullDown and kPORT_PullUp were designed to not only select the pull resistor but also to enable the resistor itself. So if you use something like PORT_PCR_PS(kPORT_PullDown), it will only select the corresponding resistor, but it will not enable the resistor. I think this is why the Config tool doesn't use the Mask Macro to setup the internal resistor.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Hope it helps&lt;/P&gt;&lt;P&gt;Best regards&lt;/P&gt;&lt;P&gt;Jorge Alcala&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 23 Jul 2018 15:39:04 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCUXpresso-Config-Tools/missing-PORT-PCR-PS-in-Pull-Select-configuration/m-p/831531#M583</guid>
      <dc:creator>jorge_a_vazquez</dc:creator>
      <dc:date>2018-07-23T15:39:04Z</dc:date>
    </item>
    <item>
      <title>Re: missing PORT_PCR_PS in Pull Select configuration</title>
      <link>https://community.nxp.com/t5/MCUXpresso-Config-Tools/missing-PORT-PCR-PS-in-Pull-Select-configuration/m-p/831532#M584</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I'm sorry but your answer is apparently not related to my point.&lt;/P&gt;&lt;P&gt;In the Pin Control Register (PORTn_PCR[m]), the difference between Pull Select (PS) and Pull Enable (PE) is clear for me. It is not the point here.&lt;/P&gt;&lt;P&gt;My question is related to coding consistancy in the &lt;EM&gt;pin_mux.c&lt;/EM&gt; file. To isolate the proper bit field in PCR, macros have been defined in the file MK64F12.h and are usually used:&lt;/P&gt;&lt;P&gt;/*! @name PCR - Pin Control Register n */&lt;BR /&gt;#define PORT_PCR_PS_MASK&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0x1U)&lt;BR /&gt;#define PORT_PCR_PS_SHIFT&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0U)&lt;BR /&gt;#define PORT_PCR_PS(x)&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (((uint32_t)(((uint32_t)(x)) &amp;lt;&amp;lt; PORT_PCR_PS_SHIFT)) &amp;amp; PORT_PCR_PS_MASK)&lt;BR /&gt;#define PORT_PCR_PE_MASK&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0x2U)&lt;BR /&gt;#define PORT_PCR_PE_SHIFT&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (1U)&lt;BR /&gt;#define PORT_PCR_PE(x)&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (((uint32_t)(((uint32_t)(x)) &amp;lt;&amp;lt; PORT_PCR_PE_SHIFT)) &amp;amp; PORT_PCR_PE_MASK)&lt;/P&gt;&lt;P&gt;[...]&lt;/P&gt;&lt;P&gt;But for some reason, it is not always the case and it looks like a mistake in the code generation. See the difference between the two configs below. In my opinion "&lt;EM&gt;(uint32_t)(kPORT_PullDown)&lt;/EM&gt;" should be replaced with "&lt;EM&gt;PORT_PCR_PS(kPORT_PullDown)&lt;/EM&gt;".&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;PORTA-&amp;gt;PCR[7] = ((PORTA-&amp;gt;PCR[7] &amp;amp;&lt;BR /&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Mask bits to zero which are setting */&lt;BR /&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (~(PORT_PCR_PS_MASK | PORT_PCR_ISF_MASK)))&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Pull Select: Internal pulldown resistor is enabled on the corresponding pin, if the&lt;BR /&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * corresponding PE field is set. */&lt;BR /&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | PORT_PCR_PS(kPORT_PullDown));&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;PORTE-&amp;gt;PCR[26] = ((PORTE-&amp;gt;PCR[26] &amp;amp;&lt;BR /&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Mask bits to zero which are setting */&lt;BR /&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (~(PORT_PCR_PS_MASK | PORT_PCR_PE_MASK | PORT_PCR_PFE_MASK | PORT_PCR_ISF_MASK)))&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Pull Select: Internal pulldown resistor is enabled on the corresponding pin, if the&lt;BR /&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * corresponding PE field is set. */&lt;BR /&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | (uint32_t)(kPORT_PullDown)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Passive Filter Enable: Passive input filter is enabled on the corresponding pin, if the&lt;BR /&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * pin is configured as a digital input.&lt;BR /&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * Refer to the device data sheet for filter characteristics. */&lt;BR /&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | PORT_PCR_PFE(kPORT_PassiveFilterEnable));&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 25 Jul 2018 08:06:27 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCUXpresso-Config-Tools/missing-PORT-PCR-PS-in-Pull-Select-configuration/m-p/831532#M584</guid>
      <dc:creator>GuillaumeAudirac</dc:creator>
      <dc:date>2018-07-25T08:06:27Z</dc:date>
    </item>
    <item>
      <title>Re: missing PORT_PCR_PS in Pull Select configuration</title>
      <link>https://community.nxp.com/t5/MCUXpresso-Config-Tools/missing-PORT-PCR-PS-in-Pull-Select-configuration/m-p/831533#M585</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi&amp;nbsp;&lt;SPAN class=""&gt;Guillaume Audirac &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;I agree with you, it looks like a mistake in the code generation as long as these codes have a different implementation. &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;My previous post is more to mention that&amp;nbsp; "(uint32_t)(kPORT_PullDown)" and "PORT_PCR_PS(kPORT_PullDown)" are not functional identical, PORT_PCR_PS uses a mask that will not set up the same that (uint32_t)(kPORT_PullDown)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;Regards&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;Jorge Alcala&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 29 Jul 2018 22:37:15 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCUXpresso-Config-Tools/missing-PORT-PCR-PS-in-Pull-Select-configuration/m-p/831533#M585</guid>
      <dc:creator>jorge_a_vazquez</dc:creator>
      <dc:date>2018-07-29T22:37:15Z</dc:date>
    </item>
  </channel>
</rss>

