Имеем: LPC2148 + IAR + Wigller. Девайс непрерывно обменивается данными с РС через UART. Останавливаем программу кнопкой [Break] или по брекпоинту – без разницы. После остановки данные еще какое-то время продолжают поступать в UART. В регистре UOIIR видно, что имеется отложенное CTI-прерывание, что вполне логично. Если затем продолжить выполнение программы, дав тем самым процу возможность обработать прерывание – все нормально. А во если ее сбросить, то прерывание UART «залипает». После этого идентификатор в UOIIR уже не сбрасывается ни при инициализации UART, ни при обработке прерывания (считывания U0RBR), в результате чего программа постоянно входит в обработчик. Помогает только аппаратный сброс с последующим перезапуском отладчика. Так должно быть или это результат кривого программирования? (во всем остальном UART работает нормально) Почему команда сброса ФИФО во время инициализации не сбрасывает прерывание?
|