|
вопрос про прерывания, AT91SAM7X |
|
|
|
Dec 6 2007, 11:06
|
Участник

Группа: Новичок
Сообщений: 49
Регистрация: 14-02-07
Пользователь №: 25 346

|
Судя по даташиту, в начале обработки прерывания необходимо прочитать регистр AIC_IVR, как они выражаются, это the entry point of the interrupt handling.. В конце обработки прерывания необходимо прописать что-нибудь в регистр AIC_EOICR, т.к. это the exit point of the interrupt handling..
Так вот.. до недавнего времени мне удавалось вполне успешно обрабатывать прерывания (TC, CAN, ADC), не читая AIC_IVR, а читая соответствующие статусные регистры перриферии, сбрасывающие флаг, свидетельствующий о произошедшем прерывании и прописывая какое-то значение в AIC_EOICR..
Однако при обработке прерываний от PIO и IRQ0, IRQ1 я натолкнулся на некоторые трудности.. Например, при настройке IRQ0 на срабатывание по высокому уровню без чтения AIC_IVR программа зацикливается на функции прерывания.. Когда же произвожу чтение AIC_IVR, функция прерывания выполняется один раз и больше ни на что не реагирует (кроме ресета..)
В связи с этим вопрос: необходимо ли читать регистр AIC_IVR и если да, то в каких случаях?
|
|
|
|
|
 |
Ответов
|
Dec 6 2007, 11:19
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(Sergei_K @ Dec 6 2007, 13:06)  В связи с этим вопрос: необходимо ли читать регистр AIC_IVR Да, необходимо. Цитата и если да, то в каких случаях? Вы же в самом начале привели цитату - как только вошли в обработчик прерывания, чтобы определить источник прерывания. Один раз у вас срабатывает скорее всего потому, что вы не пишете EOICR в конце обработчика.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
Сообщений в этой теме
Sergei_K вопрос про прерывания Dec 6 2007, 11:06 aaarrr Добавлю немного.
AIC_IVR лучше читать сразу при п... Dec 6 2007, 14:02 xelax не перестанет если AIC находится в Protect режиме. Dec 7 2007, 06:58 Antokha У меня почти такая же проблема: второй раз не обра... Apr 22 2009, 14:39 singlskv Цитата(Antokha @ Apr 22 2009, 18:39) У ме... Apr 22 2009, 20:05  aaarrr Цитата(singlskv @ Apr 23 2009, 00:05) Ну ... Apr 22 2009, 20:12   singlskv Цитата(aaarrr @ Apr 23 2009, 00:12) Ну, в... Apr 22 2009, 20:25 aaarrr Во-первых, не нужно читать write-only регистры. Во... Apr 22 2009, 16:53 Antokha ЦитатаВо-первых, не нужно читать write-only регист... Apr 22 2009, 17:24 aaarrr Цитата(Antokha @ Apr 22 2009, 21:24) Если... Apr 22 2009, 17:32 Antokha AT91C_BASE_PIOB->PIO_SODR |= ( DDS_P2_MODULATIO... Apr 22 2009, 17:52 aaarrr Цитата(Antokha @ Apr 22 2009, 21:52) AT91... Apr 22 2009, 18:04 sergeeff Функция обработчика объявлена как обычная функция,... Apr 22 2009, 18:44 Antokha ЦитатаФункция обработчика объявлена как обычная фу... Apr 22 2009, 19:00 aaarrr Цитата(Antokha @ Apr 22 2009, 23:00) Вооб... Apr 22 2009, 19:16 Antokha Книжка может быть и Редькина, точно скажу завтра д... Apr 22 2009, 19:23 aaarrr Цитата(Antokha @ Apr 22 2009, 23:23) При ... Apr 22 2009, 19:26 Antokha Про ошибку завтра днём. Компилятор (от IAR 5.11) д... Apr 22 2009, 19:30 Сергей Борщ Цитата(Antokha @ Apr 22 2009, 17:39) Кодe... Apr 22 2009, 20:49 Antokha ЦитатаAIC_IVR читается дважды. Огласите название к... Apr 23 2009, 04:52 aaarrr Цитата(Antokha @ Apr 23 2009, 08:52) [cod... Apr 23 2009, 11:09  SpiritDance Цитата(aaarrr @ Apr 23 2009, 15:09) Опять... Apr 28 2009, 06:23   MiklPolikov AT91SAM7S32
Если читаю IVR вначале прерывания, пр... Nov 20 2009, 00:27 Dron_Gus Потому что если вы уже попали в обработчик конкрет... Nov 20 2009, 07:04
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|