реклама на сайте
подробности

 
 
> Как определить когда Tx Shift Nios Uart закончил работу
Acvarif
сообщение Aug 10 2016, 15:32
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 998
Регистрация: 27-08-08
Пользователь №: 39 850



По прерываниям производится выдача данных по Tx Uart Nios из некоторого буфера char Buff[4800]. Период повторения 1 сек. Все данные из буфера выдаются на скорости 115200 примерно за 0.4 сек. В програме для Nios есть острая необходимость определить момент когда будет выдан по Tx последний байт из буфера. Для этого использую бит TMT регистра статуса.
Код
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;
}

Далее в теле программы
Код
if(!EmptyTxUart1() && !BeginReadContr) BeginReadContr = 1; else BeginReadContr = 0;

Вроде работает. Бит TMT устанавливается. Но устанавливается намнго раньше (~ 0.1 сек) чем будет выдан последний бит по Tx (~0.4 сек). Контроль установки BeginReadContr и сигнала Tx веду по осциллографу.
В чем тут хитрость? Как можно правильно пределить момент выдачи последнего бита из буфера Tx Nios Uart?

Сообщение отредактировал Acvarif - Aug 10 2016, 15:36
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 04:46
Рейтинг@Mail.ru


Страница сгенерированна за 0.01369 секунд с 7
ELECTRONIX ©2004-2016