уже несколько дней пытаюсь запустить плату (at91sam7x256).
смог только помигать светодиодами. хочу понять как работает прерывание по нажатию кнопки. но все эти коды у меня не работают =(
(я совсем новичек в этом деле..)
прерывание по нажатию кнопки AT91SAM7
- Реклама
-
inkHunter
- Грызет канифоль
- Сообщения: 287
- Зарегистрирован: Сб авг 21, 2010 20:44:27
- Откуда: Ростов
- Контактная информация:
Re: прерывание по нажатию кнопки AT91SAM7
на X должно работать, у меня платы на S просто ...wild_stud писал(а):уже несколько дней пытаюсь запустить плату (at91sam7x256).
смог только помигать светодиодами. хочу понять как работает прерывание по нажатию кнопки. но все эти коды у меня не работают =(
(я совсем новичек в этом деле..)
#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);
}
Будут вопросы пишите ...
Re: прерывание по нажатию кнопки AT91SAM7
попробовал и этот код, но все никак
-
inkHunter
- Грызет канифоль
- Сообщения: 287
- Зарегистрирован: Сб авг 21, 2010 20:44:27
- Откуда: Ростов
- Контактная информация:
Re: прерывание по нажатию кнопки AT91SAM7
у меня все работает ...wild_stud писал(а):попробовал и этот код, но все никак
правильно подключил ?
Re: прерывание по нажатию кнопки AT91SAM7
угу.. у меня отладочная от атмела. ну и там 4 светодиода и джойстик.
вот хочу чтоб от джойстика изменялось состояние светодиодов
вот хочу чтоб от джойстика изменялось состояние светодиодов
- Реклама
Re: прерывание по нажатию кнопки AT91SAM7
может кому нужно или будет интересно.. здесь есть файлы для at91sam7.
просто сам их несколько дней искал
а именно at91sam7x-ek
просто сам их несколько дней искал
а именно at91sam7x-ek
-
inkHunter
- Грызет канифоль
- Сообщения: 287
- Зарегистрирован: Сб авг 21, 2010 20:44:27
- Откуда: Ростов
- Контактная информация:
Re: прерывание по нажатию кнопки AT91SAM7
хз, должно все работать ... попробуй без прерываний, будет работать, скнить точное название платыwild_stud писал(а):угу.. у меня отладочная от атмела. ну и там 4 светодиода и джойстик.
вот хочу чтоб от джойстика изменялось состояние светодиодов
Re: прерывание по нажатию кнопки AT91SAM7
открыл те примеры, переделал под себя, все заработало))
плата Atmel AT91SAM7X-EK
куски кода: (первое нажатие включает, второе нажатие отключает)
плата 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 {выключить}
}


