<?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: TSI EOSF bit polling problem. in Kinetis Microcontrollers</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/TSI-EOSF-bit-polling-problem/m-p/253091#M7293</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, Piesta&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;I checked your code. I think you might forget one item in your code. You disable software trigger in your TSI initial function. But you forget to enable it in your calibration function. Please help to check again.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Hope my reply can help you.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best Regards&lt;/P&gt;&lt;P&gt;Paul&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 04 Nov 2013 03:29:55 GMT</pubDate>
    <dc:creator>Paul_Tian</dc:creator>
    <dc:date>2013-11-04T03:29:55Z</dc:date>
    <item>
      <title>TSI EOSF bit polling problem.</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/TSI-EOSF-bit-polling-problem/m-p/253090#M7292</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I've been trying to write my own TSI procedure which is heavily based on this example : &lt;A href="http://freescalehome.wordpress.com/2012/10/15/using-the-touch-interface-on-the-freescale-freedom-development-platform/" title="http://freescalehome.wordpress.com/2012/10/15/using-the-touch-interface-on-the-freescale-freedom-development-platform/"&gt;Using the touch interface on the Freescale Freedom Development Platform « The Embedded Beat: Freescale Blog Community &lt;/A&gt;&lt;/P&gt;&lt;P&gt;Everything seems to work fine untill i reach "while(!(TSI0_GENCS &amp;amp;= TSI_GENCS_EOSF_MASK));" command.&amp;nbsp; Kl25z is running 48MHz in PEE mode.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Debugger shows that whole GENC register is cleared&amp;nbsp; as soon as i'm checking&amp;nbsp; if scan is completed. Do you have any clues, hints ? &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm looking forward to your reply.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;My code is showed below:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;void TSI_init(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; SIM_SCGC5 |= SIM_SCGC5_PORTB_MASK; //sygnał zegarowy na PORTB&lt;/P&gt;&lt;P&gt;&amp;nbsp; SIM_SCGC5 |= SIM_SCGC5_TSI_MASK;&amp;nbsp; // sygnał zegarowy na moduł TSI&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; // Enable GPIO pins as TSI channels&lt;/P&gt;&lt;P&gt;&amp;nbsp; PORTB_PCR16 |= PORT_PCR_MUX(0);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // multipleks PTB16 as TSI channel 9&lt;/P&gt;&lt;P&gt;&amp;nbsp; PORTB_PCR17 |=&amp;nbsp; PORT_PCR_MUX(0);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // multipleks PTB17 as TSI channel 10&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; TSI0_GENCS |= (TSI_GENCS_ESOR_MASK&lt;/P&gt;&lt;P&gt;&amp;nbsp; | TSI_GENCS_MODE(0)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Non-noise detection -&amp;gt; tylko dla srodowisk z dużymi zakłoceniami EMI&lt;/P&gt;&lt;P&gt;&amp;nbsp; | TSI_GENCS_REFCHRG(4)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 8 micro-amp charge -&amp;gt;prąd referencjnego oscylatora&lt;/P&gt;&lt;P&gt;&amp;nbsp; | TSI_GENCS_DVOLT(0)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Set voltage rails -&amp;gt; ustaw szyny Vp=1,33V Vmin=0,30V&lt;/P&gt;&lt;P&gt;&amp;nbsp; | TSI_GENCS_EXTCHRG(7)&amp;nbsp;&amp;nbsp;&amp;nbsp; // Set charge/discharge current -&amp;gt; prąd oscylatora zewnętrznego 64uA&lt;/P&gt;&lt;P&gt;&amp;nbsp; | TSI_GENCS_PS(4)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Frequency divided by 16 -&amp;gt; częstotliwosć oscylatora zewnętrznego&lt;/P&gt;&lt;P&gt;&amp;nbsp; | TSI_GENCS_NSCN(11)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Scan electrode count -&amp;gt; skanuj elektrodę 12x&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //| TSI_GENCS_TSIIEN_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // interrupts&lt;/P&gt;&lt;P&gt;&amp;nbsp; | TSI_GENCS_STPE_MASK // pozwol na prace TSI w kazdym z trybów pracy procesora&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; | TSI_GENCS_STM_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Scan trigger type software&lt;/P&gt;&lt;P&gt;&amp;nbsp; // 0 = software&lt;/P&gt;&lt;P&gt;&amp;nbsp; );&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; // Do not enable TSI module until all other settings are in place!&lt;/P&gt;&lt;P&gt;&amp;nbsp; TSI0_GENCS |= TSI_GENCS_TSIEN_MASK; // włączenie modułu TSI, zeby zmienic powyzsze opcje nalezy wylaczyc modul,zmienic ustawienia i z powrotem wlaczyc TSI&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; CalibrateTSI();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;} // End InitTSI()&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;void CalibrateTSI(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;TSI0_GENCS |= TSI_GENCS_EOSF_MASK;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Clear end of scan flag&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// Scan first electrode (TSI9)&lt;/P&gt;&lt;P&gt;TSI0_DATA |=TSI_DATA_TSICH(9); &lt;/P&gt;&lt;P&gt;TSI0_DATA |= TSI_DATA_SWTS_MASK;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Request scan&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;while(!(TSI0_GENCS &amp;amp;= TSI_GENCS_EOSF_MASK)); // poczekaj az skanowanie dobiegnie konca-&amp;gt; EOSF=1&lt;/P&gt;&lt;P&gt;TSI0_GENCS |= TSI_GENCS_EOSF_MASK;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // zeruj flage zakonczenia skanowania -&amp;gt; wpisz 1 do EOSF&lt;/P&gt;&lt;P&gt;kalibracja[0] = (TSI0_DATA &amp;amp;=TSI_DATA_TSICNT_MASK); // zapisz wynik skanowania pierwszej elektrody do tablicy&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// Scan second electrode (TSI10)&lt;/P&gt;&lt;P&gt;TSI0_DATA |=TSI_DATA_TSICH(10); &lt;/P&gt;&lt;P&gt;TSI0_DATA |= TSI_DATA_SWTS_MASK;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Request scan&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;while(!(TSI0_GENCS &amp;amp;= TSI_GENCS_EOSF_MASK));&amp;nbsp;&amp;nbsp;&amp;nbsp; // Spin until done&lt;/P&gt;&lt;P&gt;TSI0_GENCS |= TSI_GENCS_EOSF_MASK;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Clear end of scan flag&lt;/P&gt;&lt;P&gt;kalibracja[1] = (TSI0_DATA &amp;amp;= TSI_DATA_TSICNT_MASK);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TSI0_DATA |=TSI_DATA_TSICH(9);&amp;nbsp;&amp;nbsp;&amp;nbsp; // Select electrode to scan&lt;/P&gt;&lt;P&gt;currentElectrode = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Set flag for first electrode&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 02 Nov 2013 09:39:53 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/TSI-EOSF-bit-polling-problem/m-p/253090#M7292</guid>
      <dc:creator>mateuszpiesta</dc:creator>
      <dc:date>2013-11-02T09:39:53Z</dc:date>
    </item>
    <item>
      <title>Re: TSI EOSF bit polling problem.</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/TSI-EOSF-bit-polling-problem/m-p/253091#M7293</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, Piesta&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;I checked your code. I think you might forget one item in your code. You disable software trigger in your TSI initial function. But you forget to enable it in your calibration function. Please help to check again.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Hope my reply can help you.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best Regards&lt;/P&gt;&lt;P&gt;Paul&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 04 Nov 2013 03:29:55 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/TSI-EOSF-bit-polling-problem/m-p/253091#M7293</guid>
      <dc:creator>Paul_Tian</dc:creator>
      <dc:date>2013-11-04T03:29:55Z</dc:date>
    </item>
    <item>
      <title>Re: TSI EOSF bit polling problem.</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/TSI-EOSF-bit-polling-problem/m-p/253092#M7294</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Well I've checked everything once again and finally found problem. &lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;There were problem in command "&lt;/SPAN&gt;&lt;SPAN style="color: #3d3d3d; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif;"&gt;TSI0_GENCS &amp;amp;= TSI_GENCS_EOSF_MASK&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;". It should be just plain &amp;amp; without = . EOSF mask has value 0x04 so that command was clearing whole register because bitwise AND assigment. &lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 04 Nov 2013 14:47:52 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/TSI-EOSF-bit-polling-problem/m-p/253092#M7294</guid>
      <dc:creator>mateuszpiesta</dc:creator>
      <dc:date>2013-11-04T14:47:52Z</dc:date>
    </item>
  </channel>
</rss>

