прерывание по нажатию кнопки AT91SAM7

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Аватара пользователя
wild_stud
Родился
Сообщения: 5
Зарегистрирован: Ср дек 07, 2011 12:10:05

Re: прерывание по нажатию кнопки AT91SAM7

Сообщение wild_stud »

уже несколько дней пытаюсь запустить плату (at91sam7x256).
смог только помигать светодиодами. хочу понять как работает прерывание по нажатию кнопки. но все эти коды у меня не работают =(
(я совсем новичек в этом деле..)
Реклама
inkHunter
Грызет канифоль
Сообщения: 287
Зарегистрирован: Сб авг 21, 2010 20:44:27
Откуда: Ростов
Контактная информация:

Re: прерывание по нажатию кнопки AT91SAM7

Сообщение inkHunter »

wild_stud писал(а):уже несколько дней пытаюсь запустить плату (at91sam7x256).
смог только помигать светодиодами. хочу понять как работает прерывание по нажатию кнопки. но все эти коды у меня не работают =(
(я совсем новичек в этом деле..)
на X должно работать, у меня платы на S просто ...

#include <at91sam7s256.h>

#define LED0 (1<<0) // PA0
#define LED1 (1<<1) // PA1
#define LED2 (1<<2) // PA2
#define LED3 (1<<3) // PA3


#define SW0 (1<<19) // PA19
#define SW1 (1<<20) // PA20
#define SW2 (1<<15) // PA15
#define SW3 (1<<14) // PA14

long int status=0;
int t=0;
unsigned int a=1;

__irq void SW (void)
{
for (t=0; t<1000000; t++) // delay
{}
status=*AT91C_PIOA_ISR;



a=~a;
if(a==1)
{
*AT91C_PIOA_CODR = LED1;
}
else
{
*AT91C_PIOA_SODR = LED1;
}
AT91C_BASE_AIC->AIC_EOICR = 0;
}

int main(void)
{
AT91C_BASE_PMC->PMC_PCER =(1 << AT91C_ID_PIOA);

*AT91C_PIOA_OER = LED1;
*AT91C_PIOA_SODR= LED1;

*AT91C_PIOA_IER = SW2;

AT91C_BASE_AIC->AIC_SMR[AT91C_ID_PIOA] = AT91C_AIC_PRIOR_LOWEST;
AT91C_BASE_AIC->AIC_SVR[AT91C_ID_PIOA] = (unsigned int) SW;
AT91C_BASE_AIC->AIC_IECR = (1<<AT91C_ID_PIOA);

while(1);
}

Будут вопросы пишите ...
Реклама
Аватара пользователя
wild_stud
Родился
Сообщения: 5
Зарегистрирован: Ср дек 07, 2011 12:10:05

Re: прерывание по нажатию кнопки AT91SAM7

Сообщение wild_stud »

попробовал и этот код, но все никак
inkHunter
Грызет канифоль
Сообщения: 287
Зарегистрирован: Сб авг 21, 2010 20:44:27
Откуда: Ростов
Контактная информация:

Re: прерывание по нажатию кнопки AT91SAM7

Сообщение inkHunter »

wild_stud писал(а):попробовал и этот код, но все никак
у меня все работает ...
правильно подключил ?
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
wild_stud
Родился
Сообщения: 5
Зарегистрирован: Ср дек 07, 2011 12:10:05

Re: прерывание по нажатию кнопки AT91SAM7

Сообщение wild_stud »

угу.. у меня отладочная от атмела. ну и там 4 светодиода и джойстик.
вот хочу чтоб от джойстика изменялось состояние светодиодов
Реклама
Аватара пользователя
wild_stud
Родился
Сообщения: 5
Зарегистрирован: Ср дек 07, 2011 12:10:05

Re: прерывание по нажатию кнопки AT91SAM7

Сообщение wild_stud »

может кому нужно или будет интересно.. здесь есть файлы для at91sam7.
просто сам их несколько дней искал
а именно at91sam7x-ek
Реклама
inkHunter
Грызет канифоль
Сообщения: 287
Зарегистрирован: Сб авг 21, 2010 20:44:27
Откуда: Ростов
Контактная информация:

Re: прерывание по нажатию кнопки AT91SAM7

Сообщение inkHunter »

wild_stud писал(а):угу.. у меня отладочная от атмела. ну и там 4 светодиода и джойстик.
вот хочу чтоб от джойстика изменялось состояние светодиодов
хз, должно все работать ... попробуй без прерываний, будет работать, скнить точное название платы
Аватара пользователя
wild_stud
Родился
Сообщения: 5
Зарегистрирован: Ср дек 07, 2011 12:10:05

Re: прерывание по нажатию кнопки AT91SAM7

Сообщение wild_stud »

открыл те примеры, переделал под себя, все заработало))
плата Atmel AT91SAM7X-EK
куски кода: (первое нажатие включает, второе нажатие отключает)

Код: Выделить всё

/// типа флаги нажатия кнопок Кн1, Кн2 соответственно
unsigned int b1=0, b2=0, b3=0, b4=0;
...
void ISR_Bp1(void)
{

    static unsigned int lastPress = 0;

    // Check if the button has been pressed
    if (!PIO_Get(&pinPB1)) {

        b1=!b1; }// инвертирование флага нажатия кнопки
...
int main(void)
{
if (b1) {зажечь светодиоды}
else {выключить}
}
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»