Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Valued Contributor III
777 Views

operate UART w/ NIOS wo/ HAL

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; }
0 Kudos
1 Reply
Highlighted
Valued Contributor III
10 Views

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.
0 Kudos