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

 
 
> Прерывания в AT91SAM7S, Помогите!!!Я в очаянии....
DAPA
сообщение Oct 17 2009, 13:12
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 4-03-09
Пользователь №: 45 664



1111493779.gif wassat.gif Привет Всем. Помогите, уже несколько дней мучаюсь на д прерыванием IRQ1 в AT91SAM7S256, перепробовал уйму вариантов, увы wassat.gif 1111493779.gif
Вот один из вариантов:

CODE
#include "Board.h"

#define EXT_OC 18432000 // Exetrnal ocilator MAINCK
#define MCK 48054857
//=================================================================
#define IRQ_1 (1<<30)
#define LED_1 (1<<26)
///////////////////////////////////////////////////////////////////
#define IRQ1_INTERRUPT_LEVEL 5

char flag = 0;
char dum;
//обработчик прерывания от IRQ1
void button(void){

AT91F_PIO_SetOutput(AT91C_BASE_PIOA, LED_1);
/*
if( flag ==1 )
{
AT91F_PIO_SetOutput(AT91C_BASE_PIOA, LED_1);
flag = 0;
}
else
{
AT91F_PIO_ClearOutput(AT91C_BASE_PIOA, LED_1);
flag = 1;
};
*/
dum = AT91C_BASE_PIOA->PIO_ISR;//разрешить следующее прерывание IRQ1(сброс ВСЕХ прерываний)
dum = dum;
};
//инициализация внешнего прерывания на линии IRQ1
void irq_interrupt_init(void){

AT91F_PIO_CfgInput(AT91C_BASE_PIOA, IRQ_1);
AT91F_PIO_CfgPeriph(AT91C_BASE_PIOA, IRQ_1, 0);
AT91F_PIO_CfgInputFilter(AT91C_BASE_PIOA, IRQ_1);//включение входного фильтра для линии IRQ1

AT91F_PMC_EnablePeriphClock(AT91C_BASE_PMC, AT91C_ID_IRQ1 );
AT91C_BASE_AIC->AIC_IDCR = (1<<31);
AT91C_BASE_AIC->AIC_SMR[31] = (0x1<<5)|(0x6);
AT91C_BASE_AIC->AIC_SVR[31] = (unsigned int)button;
AT91C_BASE_AIC->AIC_IECR = (1<<31);
// AT91F_AIC_ConfigureIt(AT91C_BASE_AIC, AT91C_ID_IRQ1, 2, 2, button);
//идентификатор устройства, приоритет, тип чувствительности, указателт на обработчик
// AT91F_AIC_EnableIt(AT91C_BASE_AIC, AT91C_ID_IRQ1);
};

int main( void ){
AT91C_BASE_RSTC->RSTC_RMR = AT91C_RSTC_URSTEN | (0x4<<8) | (unsigned int)(0xA5<<24);

AT91F_PIO_CfgOutput(AT91C_BASE_PIOA, LED_1);

irq_interrupt_init();

for (;;)
{


}
}
Причина редактирования: Оформление цитаты исходника.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
aaarrr
сообщение Oct 17 2009, 15:49
Сообщение #2


Гуру
******

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



Цитата(DAPA @ Oct 17 2009, 17:12) *
dum = AT91C_BASE_PIOA->PIO_ISR;//разрешить следующее прерывание IRQ1(сброс ВСЕХ прерываний)

Это сброс прерывания PIO, к внешним IRQx никакого отношения не имеет.
Еще забыли запись AIC_EOICR в конце обработки прерывания.

Цитата(DAPA @ Oct 17 2009, 17:12) *
AT91F_PIO_CfgInputFilter(AT91C_BASE_PIOA, IRQ_1);//включение входного фильтра для линии IRQ1

Входной фильтр распространяется только на модуль PIO, к периферийным входам пин всегда подключен напрямую.

Цитата(DAPA @ Oct 17 2009, 17:12) *
AT91F_PMC_EnablePeriphClock(AT91C_BASE_PMC, AT91C_ID_IRQ1 );

В этом тоже нет необходимости.

Если честно, не вижу причин почему бы прерыванию не срабатывать.
Не забыли ли включить прерывания глобально?
Как организована обработка вектора (0x18) прерывания?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- DAPA   Прерывания в AT91SAM7S   Oct 17 2009, 13:12
- - DAPA   Прошу прощения, разве глобальные прерывания разреш...   Oct 17 2009, 17:18
|- - aaarrr   Цитата(DAPA @ Oct 17 2009, 21:18) Прошу п...   Oct 17 2009, 18:01
- - DAPA   ЦитатаВектор, на который процессор переходит по си...   Oct 17 2009, 19:01
|- - aaarrr   Цитата(DAPA @ Oct 17 2009, 23:01) Процесс...   Oct 17 2009, 19:12
- - DAPA   ЦитатаНет, разрешаются битом I регистра PSR. В дат...   Oct 17 2009, 19:15
|- - aaarrr   Цитата(DAPA @ Oct 17 2009, 23:15) В даташ...   Oct 17 2009, 19:20
- - DAPA   Я ничего не делал с адресом 0x18, просто в литерат...   Oct 17 2009, 19:43
|- - aaarrr   Цитата(DAPA @ Oct 17 2009, 23:43) Я ничег...   Oct 17 2009, 19:48
- - DAPA   Пардон, а не подскажите как в IAR называется регис...   Oct 17 2009, 20:38
|- - aaarrr   Цитата(DAPA @ Oct 18 2009, 00:38) Пардон,...   Oct 17 2009, 21:04
- - DAPA   Кстати о регистре CPSR, в файле Cstartup.s обнаруж...   Oct 17 2009, 22:20
- - DAPA   Урррррааааааа!!!! Заработало. Всё ...   Oct 18 2009, 15:51
- - DAPA   Прошу прощения, что не по адресу А как закрыть ...   Oct 18 2009, 19:28
- - rezident   Цитата(DAPA @ Oct 19 2009, 01:28) Прошу ...   Oct 19 2009, 01:13


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

 


RSS Текстовая версия Сейчас: 22nd August 2025 - 22:18
Рейтинг@Mail.ru


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