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

 
 
> Проблемы с UART под отладкой, Залипает прерывание
b-volkov
сообщение Apr 9 2009, 05:40
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 137
Регистрация: 10-04-07
Из: г. Троицк
Пользователь №: 26 907



Имеем: LPC2148 + IAR + Wigller. Девайс непрерывно обменивается данными с РС через UART. Останавливаем программу кнопкой [Break] или по брекпоинту – без разницы. После остановки данные еще какое-то время продолжают поступать в UART. В регистре UOIIR видно, что имеется отложенное CTI-прерывание, что вполне логично. Если затем продолжить выполнение программы, дав тем самым процу возможность обработать прерывание – все нормально. А во если ее сбросить, то прерывание UART «залипает». После этого идентификатор в UOIIR уже не сбрасывается ни при инициализации UART, ни при обработке прерывания (считывания U0RBR), в результате чего программа постоянно входит в обработчик. Помогает только аппаратный сброс с последующим перезапуском отладчика. Так должно быть или это результат кривого программирования? (во всем остальном UART работает нормально) Почему команда сброса ФИФО во время инициализации не сбрасывает прерывание?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
meister
сообщение Apr 9 2009, 05:45
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 219
Регистрация: 20-11-07
Пользователь №: 32 484



Цитата(b-volkov @ Apr 9 2009, 09:40) *
А во если ее сбросить, то прерывание UART «залипает».


Перезапустить программу в отладчике? Такого нет. Сбрасывайте все регистры UART и VIC при инициализации.
Go to the top of the page
 
+Quote Post
b-volkov
сообщение Apr 10 2009, 09:44
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 137
Регистрация: 10-04-07
Из: г. Троицк
Пользователь №: 26 907



Как нет? А кнопка "Reset"? В смысле, кнопка не на плате, а на панели инструментов отладчика.
А что значит "сбрасывать"? Записывать в них нули? К сожалению, флаг прерывания так не сбрасывается. В VIC, на сколько я понял, предусмотрена очистка только софтовых прерываний и сброс регистра разрешения прерываний. В UART есть только команда сброса ФИФО, я ее даю - не помогает. Если я не прав - просветите.
Go to the top of the page
 
+Quote Post
meister
сообщение Apr 10 2009, 09:51
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 219
Регистрация: 20-11-07
Пользователь №: 32 484



Цитата(b-volkov @ Apr 10 2009, 13:44) *
В смысле, кнопка не на плате, а на панели инструментов отладчика.


В том смысле, что у меня все нормально.

Цитата(b-volkov @ Apr 10 2009, 13:44) *
А что значит "сбрасывать"


Для LPC2132 (вроде, одинаково с 2148).

Код
        VICSoftIntClear = ~0u;
        VICIntEnClear = ~0u;
        VICIntEnable = 0u;
        VICIntSelect = 0u;
        VICVectAddr = 0u;
Go to the top of the page
 
+Quote Post



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

 


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


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