<?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>S32 Design StudioのトピックRe: Multiple tasks using single UART0 device not working S32K144</title>
    <link>https://community.nxp.com/t5/S32-Design-Studio/Multiple-tasks-using-single-UART0-device-not-working-S32K144/m-p/729203#M2195</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Mohan,&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;i did some research for another question - and the callback function needs to perform all the stuff related to IRQ handling and data copy from UART registers. So - for your case it is better use only&amp;nbsp;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp;LPUART_DRV_ReceiveData(...) function and check the status by non-blocking way - something like: &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;if (status==&lt;SPAN&gt;STATUS_SUCCESS) &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;do something with data;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&lt;SPAN&gt;else&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;do something different;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;Jiri&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 30 Oct 2017 14:54:56 GMT</pubDate>
    <dc:creator>jiri_kral</dc:creator>
    <dc:date>2017-10-30T14:54:56Z</dc:date>
    <item>
      <title>Multiple tasks using single UART0 device not working S32K144</title>
      <link>https://community.nxp.com/t5/S32-Design-Studio/Multiple-tasks-using-single-UART0-device-not-working-S32K144/m-p/729199#M2191</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have 2 tasks scheduled in freeRTOS. Both of them using same uart 0 device for transmit and receive.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Code snippet:&lt;/P&gt;&lt;P&gt;xTaskCreate( Task1, "X", configMINIMAL_STACK_SIZE, NULL, TASK_PRIORITY, NULL );&lt;BR /&gt; xTaskCreate( Task2, "Y", configMINIMAL_STACK_SIZE, NULL, TASK_PRIORITY, NULL );&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/*Task1 receives the request from processor ABC and sends the response back from S32K144 over UART0*/&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;Task1()&amp;nbsp;&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;while(1)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LPUART_DRV_ReceiveData(UART0, &amp;amp;buffer[count], 1);&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while(LPUART_DRV_GetReceiveStatus(UART0, &amp;amp;bytesRemain) != STATUS_SUCCESS);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LPUART_DRV_SendData(UART0, &lt;SPAN&gt;buffer&lt;/SPAN&gt;, count);&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while(LPUART_DRV_GetTransmitStatus(UART0, &amp;amp;bytesRemain) != STATUS_SUCCESS);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;}&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/*Task2 sends the event from S32K144 over UART0 to processor ABC and waits for the aknowledgement*/&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;Task2()&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;while(1)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Send some event over UART0.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN&gt;LPUART_DRV_ReceiveData(&lt;/SPAN&gt;&lt;SPAN&gt;UART0&lt;/SPAN&gt;&lt;SPAN&gt;, &amp;amp;buffer[count], 1);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;while(LPUART_DRV_GetReceiveStatus(&lt;/SPAN&gt;&lt;SPAN&gt;UART0&lt;/SPAN&gt;&lt;SPAN&gt;, &amp;amp;bytesRemain) != STATUS_SUCCESS)&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;When I run single task, receive and transmit works properly.&lt;/P&gt;&lt;P&gt;However when I run both the tasks, &lt;STRONG&gt;Task2 is never receiving the ackowledgement&lt;/STRONG&gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Any suggestion please?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;&lt;P&gt;Mohan&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 30 Oct 2017 07:50:03 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S32-Design-Studio/Multiple-tasks-using-single-UART0-device-not-working-S32K144/m-p/729199#M2191</guid>
      <dc:creator>mrajanna</dc:creator>
      <dc:date>2017-10-30T07:50:03Z</dc:date>
    </item>
    <item>
      <title>Re: Multiple tasks using single UART0 device not working S32K144</title>
      <link>https://community.nxp.com/t5/S32-Design-Studio/Multiple-tasks-using-single-UART0-device-not-working-S32K144/m-p/729200#M2192</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Mohan,&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;you are using blocking functions inside task -&amp;nbsp;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;while(LPUART_DRV_GetReceiveStatus(UART0, &amp;amp;bytesRemain) != STATUS_SUCCESS); - that's first thing.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;Also sharing one HW device between tasks is - let's say - very unusual construction. It's better idea share data - no device.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;I still can't figure out what you are trying to do - but for the simple communication between S32K144 and other generic MCU (what I get from your other questions) you don't need FreeRTOS at all - it is only complicating whole thing.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;Better idea is to have nonblocking "uart_data_hadling_task" if you need a FreeRTOS task for it. And best idea is to have callback function for receive event -&amp;nbsp;LPUART_DRV_InstallRxCallback and throw away FreeRTOS.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;Jiri&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 30 Oct 2017 09:38:47 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S32-Design-Studio/Multiple-tasks-using-single-UART0-device-not-working-S32K144/m-p/729200#M2192</guid>
      <dc:creator>jiri_kral</dc:creator>
      <dc:date>2017-10-30T09:38:47Z</dc:date>
    </item>
    <item>
      <title>Re: Multiple tasks using single UART0 device not working S32K144</title>
      <link>https://community.nxp.com/t5/S32-Design-Studio/Multiple-tasks-using-single-UART0-device-not-working-S32K144/m-p/729201#M2193</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Jiri,&lt;/P&gt;&lt;P&gt;I got your point of not sharing hardware device between the tasks.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The reason I choosed freeRTOS is in future we have plan of adding couple of more tasks and also task scheduling, synchronization between tasks..... everything is provided by freeRTOS which we don't have to rewrite.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Is there any way to break from&amp;nbsp;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;LPUART_DRV_GetReceiveStatus(UART0, &amp;amp;bytesRemain) != STATUS_SUCCESS);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;blocking call ?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;My requirement is :&lt;/P&gt;&lt;P&gt;a. one task for handling request and response between processor(ABC) to S32K144.&lt;/P&gt;&lt;P&gt;b. One task for sending events dynamically on certain conditions from S32K144 to processor(ABC) and get acknowledgement.&lt;/P&gt;&lt;P&gt;Idea is to use same UART device for both the requirements.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Can you tell me more on&amp;nbsp;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;LPUART_DRV_InstallRxCallback() please.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;&lt;P&gt;Mohan&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 30 Oct 2017 10:16:08 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S32-Design-Studio/Multiple-tasks-using-single-UART0-device-not-working-S32K144/m-p/729201#M2193</guid>
      <dc:creator>mrajanna</dc:creator>
      <dc:date>2017-10-30T10:16:08Z</dc:date>
    </item>
    <item>
      <title>Re: Multiple tasks using single UART0 device not working S32K144</title>
      <link>https://community.nxp.com/t5/S32-Design-Studio/Multiple-tasks-using-single-UART0-device-not-working-S32K144/m-p/729202#M2194</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;If you install callback function - every time when you got data on UART - your callback function will be called. For example:&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;volatile unsigned char data[64];&lt;/P&gt;&lt;P&gt;void ThisIsMyRXCallback()&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LPUART_DRV_ReceiveData(INST_LPUART1, data, 1UL);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf("We got: %s\n",data);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You can install RX callback by calling&amp;nbsp;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;LPUART_DRV_InstallRxCallback(&lt;SPAN style="color: #3d3d3d;"&gt;INST_LPUART1,ThisIsMyRXCallback,NULL);&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="background-color: #ffffff; color: #3d3d3d;"&gt;Jiri&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 30 Oct 2017 11:46:10 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S32-Design-Studio/Multiple-tasks-using-single-UART0-device-not-working-S32K144/m-p/729202#M2194</guid>
      <dc:creator>jiri_kral</dc:creator>
      <dc:date>2017-10-30T11:46:10Z</dc:date>
    </item>
    <item>
      <title>Re: Multiple tasks using single UART0 device not working S32K144</title>
      <link>https://community.nxp.com/t5/S32-Design-Studio/Multiple-tasks-using-single-UART0-device-not-working-S32K144/m-p/729203#M2195</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Mohan,&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;i did some research for another question - and the callback function needs to perform all the stuff related to IRQ handling and data copy from UART registers. So - for your case it is better use only&amp;nbsp;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp;LPUART_DRV_ReceiveData(...) function and check the status by non-blocking way - something like: &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;if (status==&lt;SPAN&gt;STATUS_SUCCESS) &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;do something with data;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&lt;SPAN&gt;else&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;do something different;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;Jiri&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 30 Oct 2017 14:54:56 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S32-Design-Studio/Multiple-tasks-using-single-UART0-device-not-working-S32K144/m-p/729203#M2195</guid>
      <dc:creator>jiri_kral</dc:creator>
      <dc:date>2017-10-30T14:54:56Z</dc:date>
    </item>
    <item>
      <title>Re: Multiple tasks using single UART0 device not working S32K144</title>
      <link>https://community.nxp.com/t5/S32-Design-Studio/Multiple-tasks-using-single-UART0-device-not-working-S32K144/m-p/729204#M2196</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks Jiri for the ideas.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I could solve it with my weird kind of logic.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 01 Nov 2017 05:03:30 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S32-Design-Studio/Multiple-tasks-using-single-UART0-device-not-working-S32K144/m-p/729204#M2196</guid>
      <dc:creator>mrajanna</dc:creator>
      <dc:date>2017-11-01T05:03:30Z</dc:date>
    </item>
  </channel>
</rss>

