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

 
 
> AT91SAM7X256, SPI, прерывания, косяк вышел
gladov
сообщение Jan 19 2008, 22:26
Сообщение #1


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

Группа: Свой
Сообщений: 169
Регистрация: 10-11-05
Из: Воронеж
Пользователь №: 10 687



Здравствуйте.

Наступил на такие грабли: в одном проекте с вышеобозначенным камнем использую SPI. Причем в основном с PDC, иногда (если 1 байт) то без оного. Но в любом случае, окончание операции отсекаю по прерыванию TXEMPTY. После нескольких удачных операций перестает срабатывать прерывание. При отладке в RAM через JTAG если остановить выполнение, в памяти наблюдается следующая картина:
- В регистре SPI_SR бит TXEMPTY установлен;
- В SPI_IMR TXEMPTY установлен;
- В AIC_IPR установлен бит периферии SPI
- В AIC_IMR установлен бит периферии SPI
- В соотв. AIC_SMR прерывание сконфигурировано по уровню
- В ядре (CPSR) прерывания разрешены
И прерывание НЕ ВЫЗЫВАЕТСЯ!!!

Кто может подсказать, где еще могут быть запрещены прерывания?

ЗЫ: Работа с SPI организована так, что чтение осуществляется только через PDC, поэтому я использую только одно прерывание - TXEMPTY. Ессно, свалившись в прерывание, я запрещаю TXEMPTY (т.к. по уровню работаем), а потом, при очередной посылке данных, готовлю передатчик и разрешаю TXEMPTY. Напомню, что первые несколько операций проходят успешно. Путем шаманских плясок выяснилось, что если в начале каждого прерывания выполнять чтение SPI_RDR регистра, то все работает как надо. Почему - не понимаю.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 26th June 2025 - 22:12
Рейтинг@Mail.ru


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