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

 
 
> Обьясните разницу в прерываниях UART'a
kurtis
сообщение Dec 25 2008, 14:06
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 466
Регистрация: 21-06-05
Пользователь №: 6 205



Вероятно, я недостаточно внимательно читаю документацию, но возникает вопрос в чем разница между Data Register Empty Interrupt и Transmit Compete Interrupt ? Насколько я понял, это 2 прерывания которые возникают при оправке данных, но первое возникает когда данные из регистра данных попадают в сдвиговый регистр для отправки, а второе когда сдвиговый регистр выдал байт в сеть (насколько я понял). Но тогда получается что они выполняют практически одну и туже задачу.
В чем же тогда разница и зачем потребовалось делать именно 2 прерывания, а не одно ?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SysRq
сообщение Dec 26 2008, 21:24
Сообщение #2


Чайник, 1 литр
****

Группа: Свой
Сообщений: 655
Регистрация: 17-05-06
Из: Moscow
Пользователь №: 17 168



Цитата(ReAl @ Dec 26 2008, 00:28) *
Флаг прерывания TXC имеет шанс взвестить - на высокой скорости, при нагруженном другими, более приоритетными прерываниями процессоре - UDRE может "опоздать" и взведётся ещё и TXC.
Хочется добавить, что это весьма ценное замечание.
Его следует учесть тут:
Цитата(Maik-vs @ Dec 26 2008, 17:07) *
При отправке пакета по сети RS485...
//...
прерывание UDRE: записать следующий байт в UDR, если не конец пакета.
прерывание TXE: вернуть UART в режим приёма.

Наступил на эти грабли при работе с каналом RS485, где линии НЕ подтянуты к уровню 2.5В, и в режиме молчания по линии гуляет мусор. Ошибочное переключение передача-приём-передача в такой ситуации при передаче пакета (протокол типа недо-MODBUS ASCII) приводило к тому что приёмники ловили мусор (он, конечно, отфильтровывался, но ненужное прерывание в МК вызывал).
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 24th August 2025 - 23:39
Рейтинг@Mail.ru


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