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

 
 
> Нужен пример прерывания
_Pavel
сообщение Nov 21 2009, 14:53
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 20
Регистрация: 17-11-09
Из: Иркутск
Пользователь №: 53 690



В апнотах посмотрел, но осталось много вопросов (голого примера прерывания не нашел). Еще хотел бы еще разобраться с программируемым контроллером клоков.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Shaienn
сообщение Nov 25 2009, 12:38
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 103
Регистрация: 21-06-09
Пользователь №: 50 494



Вот простой пример рабочего прерывания.

Код
#include <AT91SAM7S256.H>                       /* AT91SAMT7S64 definitions  */
#include <lib_AT91SAM7S256.h>
/*
* Main Program
*/
int i;

__irq void isrSYS(void)
{
         unsigned int status = AT91C_BASE_SYS->PITC_PIVR;
         if (i)
         {
             AT91C_BASE_PIOA->PIO_SODR = 1;
             i = 0;
         }
         else
         {
             AT91C_BASE_PIOA->PIO_CODR = 1;
             i = 1;
         }
         AT91C_BASE_AIC->AIC_EOICR = status;
}

int main (void) {
  // Enable the Clock of the PIO
    AT91C_BASE_PIOA->PIO_PER = (1 << AT91C_PIO_PA0);
    AT91C_BASE_PIOA->PIO_OER = 0x00000001;
    AT91C_BASE_PMC->PMC_PCER = (1 << AT91C_ID_PIOA);
    AT91C_BASE_PITC->PITC_PIMR = AT91C_PITC_PITEN|AT91C_PITC_PITIEN|0x0ffff7;
    AT91C_BASE_AIC->AIC_SVR[AT91C_ID_SYS] = (unsigned int)isrSYS;
    AT91C_BASE_AIC->AIC_SMR[AT91C_ID_SYS] =  6;
    AT91C_BASE_AIC->AIC_IECR = (1UL << AT91C_ID_SYS);
  // Loop forever
  for (;;)

  {
  }
}
Go to the top of the page
 
+Quote Post



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

 


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


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