ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
24 ноября
29574
libine (19.05.2005 11:06, просмотров: 616)
Установка в UART RDA и CTI, когда FIFO пуст Ещё одна проблема, Имееется выполненный на LPC2106 проект. Используется UART. FIFO сконфигурировано как U0FCR = 0x1; т.е. разрешено, но Rx Trigger Level установлен в 0 (прерывание после приёма каждого символа). Модуль обмена по UART был написан и отлажен, работает устойчиво. Однако иногда, если LPC ещё не запущен, а на другом конце RS-232 запускается устройство и что-то попадает в линию, после запуска LPC возникают прерывания Receive Data Available (RDA), а затем Character Time-out Indicator (CTI). По логике, поскольку эти прерывания должны возникать, когда мимнимум один символ находится в Rx FIFO, чтение регистра статуса линии U0LSR должно возвращать бит Receiver Data Ready (RDR) установленным. Однако из U0LSR читается 0x60 (установлены только THRE и TEMT). Данная ситуация вводит в замешательство мой обработчик прерываний, который обязан выполнить чтение RBR, чтобы сбросить прерывание, но видя, что RDR не установлен, этого не делает, и прерывание остаётся установленным. Известна ли описанная мною проблема? Буду благодарен за подсказку, как избежать установки прерываний RDA и CTI, если FIFO приёмника пуст. Или необходимо принимать меры в программе для обнаружения этой, вроде бы нештатной, ситуации? Спасибо