Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Altera_Forum
Honored Contributor I
817 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
Altera_Forum
Honored Contributor I
50 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.
Reply