Using UART component RX Interrupt - Tx Polling

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Anonymous
Not applicable

Hi all,

I'm a newbie using Cypress platform and i'm currently developing an application where uses rs485 protocol, based on a UART component.

I'm guessing if there's any possibility to use the UART interrupt for RX and using Tx in blocking and polling mode. I mean, i want to check that UART has sent all the data, by checking UART_INTR_TX_UART_DONE without interrupts. Here an example:

uint8_t

Rs485_SendData( uint8_t *txbuf, uint16_t len ) {

uint16_t btosend, bsent;  

    btosend = len;

    bsent = 0;

    En_Tx();

  while( btosend-- ) {

  UART_UartPutChar( *( txbuf + bsent ) );

        bsent++;

  }

     /* Here i want to check by polling if UART_INTR_TX_UART_DONE sets to enable Rx pin of driver */

    En_Rx();

    return bsent;

}  

Any suggest?

Thanks in advance

0 Likes
1 Solution

Your code will work when you use UART_GetTxInterruptSource() (parentheses needed).

Additionally you will need to reset the interrupt cause at end of your handler using UART_ClearTxInterruptSource().

Bob

View solution in original post

4 Replies