- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The following code should make a loopback between UART RX and TX (echo).
However, it seems that first N typed chars (from PC towards the board) are not successfully absorbed. After N characters (few dozens, I guess), it works correctly (I get an echo for each character I type). Any ideas?# include "altera_avalon_uart_regs.h"# include "system.h"
typedef unsigned char u8;
typedef unsigned short u16;
typedef unsigned int u32;
# define UART_BASE UART_0_BASE
int main ()
{
u8 uart_rx_char;
u16 uart_st_reg;
while (1) {
uart_st_reg = (u16)IORD_ALTERA_AVALON_UART_STATUS(UART_BASE);
if (uart_st_reg & ALTERA_AVALON_UART_STATUS_RRDY_MSK) {
uart_rx_char = (u8)IORD_ALTERA_AVALON_UART_RXDATA(UART_BASE);
IOWR_ALTERA_AVALON_UART_TXDATA(UART_BASE, uart_rx_char);
}
}
return 0;
}
Link Copied
1 Reply
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
try to check if transmit is ready before you write in your txdata, and clear the status register in the begining of your while.
Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page