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

 
 
> LPC2148 UART: Постоянный вызов прерывания CTI
ivstech
сообщение Sep 2 2008, 07:43
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 204
Регистрация: 5-01-06
Пользователь №: 12 860



Иногда UART переходит в такое состояние, что вызывается прерывание CTI (U1IIR=0b11001100). Если в обработчике прочитать U1LSR, то там хранится значение 0x60, т.е. младший бит (RDR)=0, якобы в FIFO данных нет. Если не прочитать U1RBR, прерывание вызовется снова. Получется, фрагмент обработчика должен быть такого вида:

Код
   case IIR_CTI:
     for(;;)
     {
       temp = rU1LSR;

       data=rU1RBR; // изначально чтение U1RBR было ниже

       // Если данных нет (RDR=0), выходим
       if ((temp&0x11)==0)
         break;

       //data=rU1RBR; // <- здесь

       // Если ошибка, продолжаем цикл без обработки принятых данных
       if (temp&(7<<2)) // PE,FE,BI
         continue;
       tn_my_queue_isend_polling(&queue,data);
     }


Странно, что в ERRATA про это ни слова, на форумах тоже
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 30th July 2025 - 15:59
Рейтинг@Mail.ru


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