<?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 S32K344 - EMIOS - IPM (Input Period Measurement) erroneous data acquisition in S32K</title>
    <link>https://community.nxp.com/t5/S32K/S32K344-EMIOS-IPM-Input-Period-Measurement-erroneous-data/m-p/2392112#M59743</link>
    <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;I'm writing a bare metal driver for the EMIOS module on my&amp;nbsp;&amp;nbsp;S32K3X4EVB-T172&amp;nbsp;evaluation board.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Currently, I'm using EMIOS_0 configured, with a 256x global prescaler, with channels as follows:&lt;/P&gt;&lt;P&gt;CH_23 -&amp;gt; MC Up Counter ( Timebase for Emios Counter Bus A)&amp;nbsp;@ 625 kHz&amp;nbsp;&lt;/P&gt;&lt;P&gt;CH_17 -&amp;gt; Running in OPWMB mode (using Counter Bus A)&lt;/P&gt;&lt;P&gt;CH_22 -&amp;gt; MC Up Counter ( Timebase for Emios Counter Bus F)&amp;nbsp;@&amp;nbsp;156.25 kHz&lt;/P&gt;&lt;P&gt;CH_9 -&amp;gt; Running in IPM mode (using Counter Bus F )&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I'm generating a 16.18hz signal with 50% duty cycle, validated by the oscilloscope, that I'm routing from the OPWMB channel (&lt;SPAN&gt;PTA0) to the IPWMB channel (PTA1).&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;Every 10ms I'm acquiring a IPM sample, which consistently returns&amp;nbsp;9657/9658, giving me a measured period of&amp;nbsp;9657 *&amp;nbsp;0,0000064 =&amp;nbsp;0,0618048, resulting in a frequency of 1/0,0618048 =&amp;nbsp;16,18hz.&lt;/P&gt;&lt;P&gt;The Issue I'm having is related the &lt;EM&gt;almost&lt;/EM&gt; &lt;STRONG&gt;periodical acquisition of erroneous values&lt;/STRONG&gt; (as shown below).&lt;/P&gt;&lt;DIV&gt;&lt;SPAN&gt;period[0] UINT16 &lt;STRONG&gt;40017 &lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;period[1] UINT16 9658 &lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;period[2] UINT16 9657 &lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;period[3] UINT16 9658 &lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;period[4] UINT16 &lt;STRONG&gt;40017 &lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;period[5] UINT16 9658 &lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;period[6] UINT16 9657 &lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;period[7] UINT16 9658 &lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;period[8] UINT16 &lt;STRONG&gt;40017 &lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;period[9] UINT16 9658 &lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;period[10] UINT16 9657 &lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;period[11] UINT16 &lt;STRONG&gt;40018 &lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;period[12] UINT16 9657 &lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;period[13] UINT16 9658 &lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;period[14] UINT16 9657 &lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;period[15] UINT16 &lt;STRONG&gt;40018 &lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here's a code snippet explaining my current polling-based acquisition logic (no dma and no interrupts):&lt;/P&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;P&gt;&lt;SPAN&gt;if&lt;/SPAN&gt; &lt;SPAN&gt;((&lt;/SPAN&gt;&lt;SPAN&gt;EMIOS0&lt;/SPAN&gt;&lt;SPAN&gt;-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;UC&lt;/SPAN&gt;&lt;SPAN&gt;[&lt;/SPAN&gt;&lt;SPAN&gt;9&lt;/SPAN&gt;&lt;SPAN&gt;]&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;S &lt;/SPAN&gt;&lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;1&lt;/SPAN&gt;&lt;SPAN&gt;u&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;!=&lt;/SPAN&gt; &lt;SPAN&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;u&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;UINT16&lt;/SPAN&gt; &lt;SPAN&gt;a1&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;UINT16&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;SPAN&gt;EMIOS0&lt;/SPAN&gt;&lt;SPAN&gt;-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;UC&lt;/SPAN&gt;&lt;SPAN&gt;[&lt;/SPAN&gt;&lt;SPAN&gt;9&lt;/SPAN&gt;&lt;SPAN&gt;]&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;A&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;UINT16&lt;/SPAN&gt; &lt;SPAN&gt;b1&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;UINT16&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;SPAN&gt;EMIOS0&lt;/SPAN&gt;&lt;SPAN&gt;-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;UC&lt;/SPAN&gt;&lt;SPAN&gt;[&lt;/SPAN&gt;&lt;SPAN&gt;9&lt;/SPAN&gt;&lt;SPAN&gt;]&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;B&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;UINT16&lt;/SPAN&gt; &lt;SPAN&gt;a2&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;UINT16&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;SPAN&gt;EMIOS0&lt;/SPAN&gt;&lt;SPAN&gt;-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;UC&lt;/SPAN&gt;&lt;SPAN&gt;[&lt;/SPAN&gt;&lt;SPAN&gt;9&lt;/SPAN&gt;&lt;SPAN&gt;]&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;A&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;UINT16&lt;/SPAN&gt; &lt;SPAN&gt;b2&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;UINT16&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;SPAN&gt;EMIOS0&lt;/SPAN&gt;&lt;SPAN&gt;-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;UC&lt;/SPAN&gt;&lt;SPAN&gt;[&lt;/SPAN&gt;&lt;SPAN&gt;9&lt;/SPAN&gt;&lt;SPAN&gt;]&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;B&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;if&lt;/SPAN&gt; &lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;a1&lt;/SPAN&gt; &lt;SPAN&gt;!=&lt;/SPAN&gt; &lt;SPAN&gt;a2&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;if&lt;/SPAN&gt; &lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;b1&lt;/SPAN&gt; &lt;SPAN&gt;!=&lt;/SPAN&gt; &lt;SPAN&gt;b2&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;period&lt;/SPAN&gt;&lt;SPAN&gt;[&lt;/SPAN&gt; &lt;SPAN&gt;Index&lt;/SPAN&gt; &lt;SPAN&gt;]&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;UINT16&lt;/SPAN&gt;&lt;SPAN&gt;)(&lt;/SPAN&gt;&lt;SPAN&gt;a2&lt;/SPAN&gt; &lt;SPAN&gt;-&lt;/SPAN&gt; &lt;SPAN&gt;b2&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;else&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;period&lt;/SPAN&gt;&lt;SPAN&gt;[&lt;/SPAN&gt; &lt;SPAN&gt;Index&lt;/SPAN&gt; &lt;SPAN&gt;]&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;UINT16&lt;/SPAN&gt;&lt;SPAN&gt;)(&lt;/SPAN&gt;&lt;SPAN&gt;a1&lt;/SPAN&gt; &lt;SPAN&gt;-&lt;/SPAN&gt; &lt;SPAN&gt;b1&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;else&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;period&lt;/SPAN&gt;&lt;SPAN&gt;[&lt;/SPAN&gt; &lt;SPAN&gt;Index&lt;/SPAN&gt; &lt;SPAN&gt;]&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;UINT16&lt;/SPAN&gt;&lt;SPAN&gt;)(&lt;/SPAN&gt;&lt;SPAN&gt;a2&lt;/SPAN&gt; &lt;SPAN&gt;-&lt;/SPAN&gt; &lt;SPAN&gt;b2&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Index&lt;/SPAN&gt;&lt;SPAN&gt;++;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;if&lt;/SPAN&gt; &lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;Index&lt;/SPAN&gt; &lt;SPAN&gt;&amp;gt;&lt;/SPAN&gt; &lt;SPAN&gt;99&lt;/SPAN&gt;&lt;SPAN&gt;u&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Index&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;u&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;EMIOS0&lt;/SPAN&gt;&lt;SPAN&gt;-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;UC&lt;/SPAN&gt;&lt;SPAN&gt;[&lt;/SPAN&gt;&lt;SPAN&gt;9&lt;/SPAN&gt;&lt;SPAN&gt;]&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;S &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt; EMIOS_UC_CLEAR_STATUS_FLG&lt;/SPAN&gt;&lt;SPAN&gt;; /* 80008001u */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;When testing different frequencies, the appearance of outliers is highly reduced but still present. Here's an example with 303hz:&lt;/P&gt;&lt;P&gt;period[0] UINT16 519&lt;BR /&gt;period[1] UINT16 519&lt;BR /&gt;period[2] UINT16 519&lt;BR /&gt;period[3] UINT16 519&lt;BR /&gt;period[4] UINT16 519&lt;BR /&gt;period[5] UINT16 519&lt;BR /&gt;period[6] UINT16 519&lt;BR /&gt;period[7] UINT16 519&lt;BR /&gt;period[8] UINT16 519&lt;BR /&gt;period[9] UINT16 519&lt;BR /&gt;period[10] UINT16 519&lt;BR /&gt;period[11] UINT16 519&lt;BR /&gt;period[12] UINT16 519&lt;BR /&gt;period[13] UINT16 &lt;STRONG&gt;30879&lt;/STRONG&gt;&lt;BR /&gt;period[14] UINT16 519&lt;BR /&gt;period[15] UINT16 519&lt;BR /&gt;period[16] UINT16 519&lt;BR /&gt;period[17] UINT16 519&lt;BR /&gt;period[18] UINT16 519&lt;BR /&gt;period[19] UINT16 519&lt;BR /&gt;period[20] UINT16 519&lt;BR /&gt;period[21] UINT16 519&lt;BR /&gt;period[22] UINT16 519&lt;BR /&gt;period[23] UINT16 519&lt;BR /&gt;period[24] UINT16 519&lt;BR /&gt;period[25] UINT16 519&lt;BR /&gt;period[26] UINT16 519&lt;BR /&gt;period[27] UINT16 519&lt;BR /&gt;period[28] UINT16 519&lt;BR /&gt;period[29] UINT16 519&lt;BR /&gt;period[30] UINT16 519&lt;BR /&gt;period[31] UINT16 519&lt;BR /&gt;period[32] UINT16 519&lt;BR /&gt;period[33] UINT16 519&lt;BR /&gt;period[34] UINT16 519&lt;BR /&gt;period[35] UINT16 519&lt;BR /&gt;period[36] UINT16 519&lt;BR /&gt;period[37] UINT16 519&lt;BR /&gt;period[38] UINT16 519&lt;BR /&gt;period[39] UINT16 519&lt;BR /&gt;period[40] UINT16 519&lt;BR /&gt;period[41] UINT16 519&lt;BR /&gt;period[42] UINT16 519&lt;BR /&gt;period[43] UINT16 519&lt;BR /&gt;period[44] UINT16 519&lt;BR /&gt;period[45] UINT16 519&lt;BR /&gt;period[46] UINT16 519&lt;BR /&gt;period[47] UINT16 519&lt;BR /&gt;period[48] UINT16 519&lt;BR /&gt;period[49] UINT16 519&lt;BR /&gt;period[50] UINT16 519&lt;BR /&gt;period[51] UINT16 519&lt;BR /&gt;period[52] UINT16 519&lt;BR /&gt;period[53] UINT16 519&lt;BR /&gt;period[54] UINT16 519&lt;BR /&gt;period[55] UINT16 519&lt;BR /&gt;period[56] UINT16 519&lt;BR /&gt;period[57] UINT16 519&lt;BR /&gt;period[58] UINT16 &lt;STRONG&gt;30879&lt;/STRONG&gt;&lt;BR /&gt;period[59] UINT16 519&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Any help?&lt;/P&gt;</description>
    <pubDate>Wed, 08 Jul 2026 09:03:02 GMT</pubDate>
    <dc:creator>fede_ls</dc:creator>
    <dc:date>2026-07-08T09:03:02Z</dc:date>
    <item>
      <title>S32K344 - EMIOS - IPM (Input Period Measurement) erroneous data acquisition</title>
      <link>https://community.nxp.com/t5/S32K/S32K344-EMIOS-IPM-Input-Period-Measurement-erroneous-data/m-p/2392112#M59743</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;I'm writing a bare metal driver for the EMIOS module on my&amp;nbsp;&amp;nbsp;S32K3X4EVB-T172&amp;nbsp;evaluation board.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Currently, I'm using EMIOS_0 configured, with a 256x global prescaler, with channels as follows:&lt;/P&gt;&lt;P&gt;CH_23 -&amp;gt; MC Up Counter ( Timebase for Emios Counter Bus A)&amp;nbsp;@ 625 kHz&amp;nbsp;&lt;/P&gt;&lt;P&gt;CH_17 -&amp;gt; Running in OPWMB mode (using Counter Bus A)&lt;/P&gt;&lt;P&gt;CH_22 -&amp;gt; MC Up Counter ( Timebase for Emios Counter Bus F)&amp;nbsp;@&amp;nbsp;156.25 kHz&lt;/P&gt;&lt;P&gt;CH_9 -&amp;gt; Running in IPM mode (using Counter Bus F )&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I'm generating a 16.18hz signal with 50% duty cycle, validated by the oscilloscope, that I'm routing from the OPWMB channel (&lt;SPAN&gt;PTA0) to the IPWMB channel (PTA1).&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;Every 10ms I'm acquiring a IPM sample, which consistently returns&amp;nbsp;9657/9658, giving me a measured period of&amp;nbsp;9657 *&amp;nbsp;0,0000064 =&amp;nbsp;0,0618048, resulting in a frequency of 1/0,0618048 =&amp;nbsp;16,18hz.&lt;/P&gt;&lt;P&gt;The Issue I'm having is related the &lt;EM&gt;almost&lt;/EM&gt; &lt;STRONG&gt;periodical acquisition of erroneous values&lt;/STRONG&gt; (as shown below).&lt;/P&gt;&lt;DIV&gt;&lt;SPAN&gt;period[0] UINT16 &lt;STRONG&gt;40017 &lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;period[1] UINT16 9658 &lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;period[2] UINT16 9657 &lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;period[3] UINT16 9658 &lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;period[4] UINT16 &lt;STRONG&gt;40017 &lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;period[5] UINT16 9658 &lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;period[6] UINT16 9657 &lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;period[7] UINT16 9658 &lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;period[8] UINT16 &lt;STRONG&gt;40017 &lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;period[9] UINT16 9658 &lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;period[10] UINT16 9657 &lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;period[11] UINT16 &lt;STRONG&gt;40018 &lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;period[12] UINT16 9657 &lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;period[13] UINT16 9658 &lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;period[14] UINT16 9657 &lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;period[15] UINT16 &lt;STRONG&gt;40018 &lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here's a code snippet explaining my current polling-based acquisition logic (no dma and no interrupts):&lt;/P&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;P&gt;&lt;SPAN&gt;if&lt;/SPAN&gt; &lt;SPAN&gt;((&lt;/SPAN&gt;&lt;SPAN&gt;EMIOS0&lt;/SPAN&gt;&lt;SPAN&gt;-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;UC&lt;/SPAN&gt;&lt;SPAN&gt;[&lt;/SPAN&gt;&lt;SPAN&gt;9&lt;/SPAN&gt;&lt;SPAN&gt;]&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;S &lt;/SPAN&gt;&lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;1&lt;/SPAN&gt;&lt;SPAN&gt;u&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;!=&lt;/SPAN&gt; &lt;SPAN&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;u&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;UINT16&lt;/SPAN&gt; &lt;SPAN&gt;a1&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;UINT16&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;SPAN&gt;EMIOS0&lt;/SPAN&gt;&lt;SPAN&gt;-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;UC&lt;/SPAN&gt;&lt;SPAN&gt;[&lt;/SPAN&gt;&lt;SPAN&gt;9&lt;/SPAN&gt;&lt;SPAN&gt;]&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;A&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;UINT16&lt;/SPAN&gt; &lt;SPAN&gt;b1&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;UINT16&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;SPAN&gt;EMIOS0&lt;/SPAN&gt;&lt;SPAN&gt;-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;UC&lt;/SPAN&gt;&lt;SPAN&gt;[&lt;/SPAN&gt;&lt;SPAN&gt;9&lt;/SPAN&gt;&lt;SPAN&gt;]&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;B&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;UINT16&lt;/SPAN&gt; &lt;SPAN&gt;a2&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;UINT16&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;SPAN&gt;EMIOS0&lt;/SPAN&gt;&lt;SPAN&gt;-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;UC&lt;/SPAN&gt;&lt;SPAN&gt;[&lt;/SPAN&gt;&lt;SPAN&gt;9&lt;/SPAN&gt;&lt;SPAN&gt;]&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;A&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;UINT16&lt;/SPAN&gt; &lt;SPAN&gt;b2&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;UINT16&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;SPAN&gt;EMIOS0&lt;/SPAN&gt;&lt;SPAN&gt;-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;UC&lt;/SPAN&gt;&lt;SPAN&gt;[&lt;/SPAN&gt;&lt;SPAN&gt;9&lt;/SPAN&gt;&lt;SPAN&gt;]&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;B&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;if&lt;/SPAN&gt; &lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;a1&lt;/SPAN&gt; &lt;SPAN&gt;!=&lt;/SPAN&gt; &lt;SPAN&gt;a2&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;if&lt;/SPAN&gt; &lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;b1&lt;/SPAN&gt; &lt;SPAN&gt;!=&lt;/SPAN&gt; &lt;SPAN&gt;b2&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;period&lt;/SPAN&gt;&lt;SPAN&gt;[&lt;/SPAN&gt; &lt;SPAN&gt;Index&lt;/SPAN&gt; &lt;SPAN&gt;]&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;UINT16&lt;/SPAN&gt;&lt;SPAN&gt;)(&lt;/SPAN&gt;&lt;SPAN&gt;a2&lt;/SPAN&gt; &lt;SPAN&gt;-&lt;/SPAN&gt; &lt;SPAN&gt;b2&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;else&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;period&lt;/SPAN&gt;&lt;SPAN&gt;[&lt;/SPAN&gt; &lt;SPAN&gt;Index&lt;/SPAN&gt; &lt;SPAN&gt;]&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;UINT16&lt;/SPAN&gt;&lt;SPAN&gt;)(&lt;/SPAN&gt;&lt;SPAN&gt;a1&lt;/SPAN&gt; &lt;SPAN&gt;-&lt;/SPAN&gt; &lt;SPAN&gt;b1&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;else&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;period&lt;/SPAN&gt;&lt;SPAN&gt;[&lt;/SPAN&gt; &lt;SPAN&gt;Index&lt;/SPAN&gt; &lt;SPAN&gt;]&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;UINT16&lt;/SPAN&gt;&lt;SPAN&gt;)(&lt;/SPAN&gt;&lt;SPAN&gt;a2&lt;/SPAN&gt; &lt;SPAN&gt;-&lt;/SPAN&gt; &lt;SPAN&gt;b2&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Index&lt;/SPAN&gt;&lt;SPAN&gt;++;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;if&lt;/SPAN&gt; &lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;Index&lt;/SPAN&gt; &lt;SPAN&gt;&amp;gt;&lt;/SPAN&gt; &lt;SPAN&gt;99&lt;/SPAN&gt;&lt;SPAN&gt;u&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Index&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;u&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;EMIOS0&lt;/SPAN&gt;&lt;SPAN&gt;-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;UC&lt;/SPAN&gt;&lt;SPAN&gt;[&lt;/SPAN&gt;&lt;SPAN&gt;9&lt;/SPAN&gt;&lt;SPAN&gt;]&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;S &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt; EMIOS_UC_CLEAR_STATUS_FLG&lt;/SPAN&gt;&lt;SPAN&gt;; /* 80008001u */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;When testing different frequencies, the appearance of outliers is highly reduced but still present. Here's an example with 303hz:&lt;/P&gt;&lt;P&gt;period[0] UINT16 519&lt;BR /&gt;period[1] UINT16 519&lt;BR /&gt;period[2] UINT16 519&lt;BR /&gt;period[3] UINT16 519&lt;BR /&gt;period[4] UINT16 519&lt;BR /&gt;period[5] UINT16 519&lt;BR /&gt;period[6] UINT16 519&lt;BR /&gt;period[7] UINT16 519&lt;BR /&gt;period[8] UINT16 519&lt;BR /&gt;period[9] UINT16 519&lt;BR /&gt;period[10] UINT16 519&lt;BR /&gt;period[11] UINT16 519&lt;BR /&gt;period[12] UINT16 519&lt;BR /&gt;period[13] UINT16 &lt;STRONG&gt;30879&lt;/STRONG&gt;&lt;BR /&gt;period[14] UINT16 519&lt;BR /&gt;period[15] UINT16 519&lt;BR /&gt;period[16] UINT16 519&lt;BR /&gt;period[17] UINT16 519&lt;BR /&gt;period[18] UINT16 519&lt;BR /&gt;period[19] UINT16 519&lt;BR /&gt;period[20] UINT16 519&lt;BR /&gt;period[21] UINT16 519&lt;BR /&gt;period[22] UINT16 519&lt;BR /&gt;period[23] UINT16 519&lt;BR /&gt;period[24] UINT16 519&lt;BR /&gt;period[25] UINT16 519&lt;BR /&gt;period[26] UINT16 519&lt;BR /&gt;period[27] UINT16 519&lt;BR /&gt;period[28] UINT16 519&lt;BR /&gt;period[29] UINT16 519&lt;BR /&gt;period[30] UINT16 519&lt;BR /&gt;period[31] UINT16 519&lt;BR /&gt;period[32] UINT16 519&lt;BR /&gt;period[33] UINT16 519&lt;BR /&gt;period[34] UINT16 519&lt;BR /&gt;period[35] UINT16 519&lt;BR /&gt;period[36] UINT16 519&lt;BR /&gt;period[37] UINT16 519&lt;BR /&gt;period[38] UINT16 519&lt;BR /&gt;period[39] UINT16 519&lt;BR /&gt;period[40] UINT16 519&lt;BR /&gt;period[41] UINT16 519&lt;BR /&gt;period[42] UINT16 519&lt;BR /&gt;period[43] UINT16 519&lt;BR /&gt;period[44] UINT16 519&lt;BR /&gt;period[45] UINT16 519&lt;BR /&gt;period[46] UINT16 519&lt;BR /&gt;period[47] UINT16 519&lt;BR /&gt;period[48] UINT16 519&lt;BR /&gt;period[49] UINT16 519&lt;BR /&gt;period[50] UINT16 519&lt;BR /&gt;period[51] UINT16 519&lt;BR /&gt;period[52] UINT16 519&lt;BR /&gt;period[53] UINT16 519&lt;BR /&gt;period[54] UINT16 519&lt;BR /&gt;period[55] UINT16 519&lt;BR /&gt;period[56] UINT16 519&lt;BR /&gt;period[57] UINT16 519&lt;BR /&gt;period[58] UINT16 &lt;STRONG&gt;30879&lt;/STRONG&gt;&lt;BR /&gt;period[59] UINT16 519&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Any help?&lt;/P&gt;</description>
      <pubDate>Wed, 08 Jul 2026 09:03:02 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S32K/S32K344-EMIOS-IPM-Input-Period-Measurement-erroneous-data/m-p/2392112#M59743</guid>
      <dc:creator>fede_ls</dc:creator>
      <dc:date>2026-07-08T09:03:02Z</dc:date>
    </item>
    <item>
      <title>Re: S32K344 - EMIOS - IPM (Input Period Measurement) erroneous data acquisition</title>
      <link>https://community.nxp.com/t5/S32K/S32K344-EMIOS-IPM-Input-Period-Measurement-erroneous-data/m-p/2392368#M59751</link>
      <description>&lt;P&gt;Hello&amp;nbsp;&lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/248917"&gt;@fede_ls&lt;/a&gt;&amp;nbsp;,&lt;/P&gt;
&lt;DIV&gt;Your polling logic is probably not the primary source of the observed outliers. The values strongly suggest that the period calculation does not handle the rollover of the selected counter bus correctly. The current expression &lt;CODE&gt;(uint16_t)(A - B)&lt;/CODE&gt; assumes a full 16-bit counter rollover at 65536, but your counter bus F appears to roll over at approximately 35176 ticks. Therefore, whenever the captured period crosses the counter rollover, an additional offset of &lt;CODE&gt;65536 - 35176 = 30360&lt;/CODE&gt; ticks is added, which exactly matches the observed outliers.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;Please check the period/modulus configured for CH22, which is used as counter bus F for the IPM channel. The period should be calculated using this actual counter bus modulo value, not using implicit 16-bit unsigned subtraction.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;P&gt;Best regards,&lt;/P&gt;
&lt;P&gt;Pavel&lt;/P&gt;</description>
      <pubDate>Wed, 08 Jul 2026 12:12:36 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S32K/S32K344-EMIOS-IPM-Input-Period-Measurement-erroneous-data/m-p/2392368#M59751</guid>
      <dc:creator>PavelL</dc:creator>
      <dc:date>2026-07-08T12:12:36Z</dc:date>
    </item>
  </channel>
</rss>

