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

 
 
 
Reply to this topicStart new topic
> Вопрос по прерываниям, ARM7TDMI, IAR 4.41
coolibin
сообщение Jun 8 2009, 08:36
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 214
Регистрация: 19-07-07
Пользователь №: 29 228



Как сделать так, чтобы два прерывания, например, от таймера и от ножки, не прерывали друг друга? достаточно их сделать с одним приоритетом? И как из текущего прерывания очистить прерывания которые сейчас в очереди? достаточно почистить флаги, например:

Код
AT91C_BASE_AIC->AIC_ICCR = (1 << AT91C_ID_PIOA);


?


--------------------
Нет повести печальнее на свете, чем повесть о хреновом интернете.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jun 8 2009, 09:06
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(coolibin @ Jun 8 2009, 12:36) *
Как сделать так, чтобы два прерывания, например, от таймера и от ножки, не прерывали друг друга? достаточно их сделать с одним приоритетом?

Или не делать вложенные прерывания, или сделать с одинаковым приоритетом.

Цитата(coolibin @ Jun 8 2009, 12:36) *
И как из текущего прерывания очистить прерывания которые сейчас в очереди? достаточно почистить флаги, например:
Код
AT91C_BASE_AIC->AIC_ICCR = (1 << AT91C_ID_PIOA);


?

Это вариант сработает только если прерывание настроено на работу по фронту, в противном случае снять можно только непосредственно у источника:
Код
AT91C_BASE_SYS->PIOA_ISR;
Go to the top of the page
 
+Quote Post
coolibin
сообщение Jun 8 2009, 10:32
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 214
Регистрация: 19-07-07
Пользователь №: 29 228



А можно дурацкий вопрос? А что такое AT91C_BASE_SYS->PIOA_ISR? Это не одно и тоже что AT91C_BASE_PIOA->PIO_ISR? А то я что то в документации не могу найти((


--------------------
Нет повести печальнее на свете, чем повесть о хреновом интернете.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jun 8 2009, 10:35
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Да, это одно и то же.
Go to the top of the page
 
+Quote Post
coolibin
сообщение Jun 8 2009, 10:47
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 214
Регистрация: 19-07-07
Пользователь №: 29 228



А нужно еще и AT91C_BASE_AIC->AIC_ICCR чистить? Или он чистится автоматически, если я чищу AT91C_BASE_SYS->PIOA_ISR? или он вообще не юзается если прерывание по уровню?


--------------------
Нет повести печальнее на свете, чем повесть о хреновом интернете.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jun 8 2009, 10:55
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Нет, не нужно - ISCR и ICCR задействованы только если прерывание работает по фронту.
В мануале же все написано.
Go to the top of the page
 
+Quote Post
coolibin
сообщение Jun 8 2009, 11:02
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 214
Регистрация: 19-07-07
Пользователь №: 29 228



Благодарю!


--------------------
Нет повести печальнее на свете, чем повесть о хреновом интернете.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 24th July 2025 - 03:11
Рейтинг@Mail.ru


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