Код
unsigned char EmptyTxUart1()
{
int sr;
sr = IORD_ALTERA_AVALON_UART_STATUS(UART_0_BASE);
if(sr & ALTERA_AVALON_UART_STATUS_TMT_MSK) return 1;
else
return 0;
}
{
int sr;
sr = IORD_ALTERA_AVALON_UART_STATUS(UART_0_BASE);
if(sr & ALTERA_AVALON_UART_STATUS_TMT_MSK) return 1;
else
return 0;
}
Далее в теле программы
Код
if(!EmptyTxUart1() && !BeginReadContr) BeginReadContr = 1; else BeginReadContr = 0;
Вроде работает. Бит TMT устанавливается. Но устанавливается намнго раньше (~ 0.1 сек) чем будет выдан последний бит по Tx (~0.4 сек). Контроль установки BeginReadContr и сигнала Tx веду по осциллографу.
В чем тут хитрость? Как можно правильно пределить момент выдачи последнего бита из буфера Tx Nios Uart?