Forum Discussion

Altera_Forum's avatar
Altera_Forum
Icon for Honored Contributor rankHonored Contributor
16 years ago

UART problem - RRDY never set

I have a simple polled UART application which is not working as I expect:

rs232_rx_control = IORD_ALTERA_AVALON_UART_STATUS(UART_BASE);

if (rs232_rx_control & ALTERA_AVALON_UART_STATUS_RRDY_MSK)

{

*pBuffer = IORD_ALTERA_AVALON_UART_RXDATA(UART_BASE);

return 1;

}

The baud rate is 57600 and I am generating the characters manually, so speed isn't the problem.

The problem is that RRDY is never being set. The characters are being received into RXDATA. They overwrite the previous received character.

I don't see any receiver overruns, framing errors or detected breaks.

Transmitting characters is no problem for me.

6 Replies

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    Maybe looked at the others bits of the status register (PE, FE, BRK) to see if the error doesn't come from here.

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    Solved this myself.

    I hadn't initialised the UART control register. I guess the default is to enable interrupts.

    With all interrupts disabled the code worked as expected.
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    Solved this myself.

    I hadn't initialised the UART control register. I guess the default is to enable interrupts.

    With all interrupts disabled the code worked as expected.
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    hey bmarshall,

    I'm facing the same problem, can you tell me how you initialised the UART control register and disabled interrupts.

    Thanx,

    Marek
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    I've been on vacation.

    I no longer have this code. Current version is interrupt driven.
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    No problem, I ended up understanding your previous post. By disabling the interrupts in the control register I got the code to work as expected.

    Regards,

    Marek