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

 
 
> Прерывания от ноги PIOA, AT91SAM7S32
Tcom
сообщение Jul 7 2008, 08:05
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 360
Регистрация: 3-01-06
Из: Украина Запорожская обл.
Пользователь №: 12 792



Привет! Скажите, можно ли организовать прерывания от любой ноги/ног PIOA.
Проц AT91SAM7S32 и если можно, небольшой примерчик. Спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
vladik
сообщение Apr 29 2009, 14:04
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 26
Регистрация: 18-05-06
Пользователь №: 17 226



Плата AT91SAM7-P64 от OLIMEX, хочу прицепить оптрон на ножку PA3.

Никак не получается воспользоваться примерами от aaarrr:

Код
__irq void pio_interrupt( void )
{
    AT91C_BASE_SYS->PIOA_ISR;

    AT91C_BASE_SYS->AIC_EOICR = 0;
}


1й вариант

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


       AT91C_BASE_SYS->PIOA_ODR = AT91C_PIO_PA3;
    AT91C_BASE_SYS->PIOA_IFER = AT91C_PIO_PA3;
    AT91C_BASE_SYS->PIOA_PER = AT91C_PIO_PA3;

    AT91C_BASE_SYS->PIOA_IDR = 0xffffffff;
    AT91C_BASE_SYS->PIOA_IER = AT91C_PIO_PA3;

    AT91C_BASE_AIC->AIC_SVR[AT91C_ID_PIOA] = (unsigned int)pio_interrupt;
    AT91C_BASE_AIC->AIC_SMR[AT91C_ID_PIOA] = 0;
    AT91C_BASE_AIC->AIC_IECR = (0x01 << AT91C_ID_PIOA);

    AT91C_BASE_PMC->PMC_PCER = (0x01 << AT91C_ID_PIOA);


    for (;;)
    {
        delay();
    }
}


2й вариант

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


       AT91C_BASE_SYS->PIOA_ODR = AT91C_PIO_PA3;
    AT91C_BASE_SYS->PIOA_PPUDR = AT91C_PIO_PA3;
    AT91C_BASE_SYS->PIOA_IFER = AT91C_PIO_PA3;
    AT91C_BASE_SYS->PIOA_PER = AT91C_PIO_PA3;

    AT91C_BASE_PMC->PMC_PCER = (1UL << AT91C_ID_PIOA);

    AT91C_BASE_SYS->PIOA_IDR = ~0;
    AT91C_BASE_SYS->PIOA_IER = AT91C_PIO_PA3;
    AT91C_BASE_AIC->AIC_SMR[AT91C_ID_PIOA] = 0;
    AT91C_BASE_AIC->AIC_SVR[AT91C_ID_PIOA] = (unsigned int)pio_interrupt;
    AT91C_BASE_AIC->AIC_IECR = (1UL << AT91C_ID_PIOA);


    for (;;)
    {
        delay();
    }
}


в прерывание не входит, постоянно крутится в delay().
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Tcom   Прерывания от ноги PIOA   Jul 7 2008, 08:05
- - aaarrr   Можно: Код#define PIN (0x01UL << 0x...   Jul 7 2008, 08:12
- - _4afc_   Цитата(Tcom @ Jul 7 2008, 12:05) Привет...   Jul 7 2008, 08:18
- - Tcom   А возможны ли вложенные прерывания, от разных ног?   Jul 7 2008, 08:45
- - aaarrr   Нет. Только в SAM7X, если ноги на разных контролле...   Jul 7 2008, 09:02
- - Tcom   Получается что когда происходит прерывание от PIO,...   Jul 7 2008, 11:26
|- - _4afc_   Цитата(Tcom @ Jul 7 2008, 15:26) Получает...   Jul 7 2008, 13:04
|- - aaarrr   Цитата(_4afc_ @ Jul 7 2008, 17:04) Надо х...   Jul 7 2008, 13:18
|- - _4afc_   Цитата(aaarrr @ Jul 7 2008, 17:18) А заче...   Jul 7 2008, 13:32
- - aaarrr   Не обязательно "1" - прерывание генериру...   Jul 7 2008, 11:31
- - aaarrr   Так и должно быть: Цитата1 = At least one Input Ch...   Jul 7 2008, 13:42
|- - _4afc_   Цитата(aaarrr @ Jul 7 2008, 17:42) Так и ...   Jul 7 2008, 14:02
- - Tcom   У меня задача состоит в улавливании еденицы на 5 н...   Jul 8 2008, 06:02
- - aaarrr   Нет, не сработает: в PIOA_ISR будут установлены би...   Jul 8 2008, 08:07
- - uriy   Если вас устроит время реакции несколько миллисеку...   Jul 8 2008, 09:33
- - aaarrr   Глобально прерывания разрешены?   Apr 29 2009, 14:47


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

 


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


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