NikolaKirov 0 6 января, 2006 Опубликовано 6 января, 2006 · Жалоба Полдня убил на експериментов и так не успел сконфигурироват перервание из него. В документации что то пропустили написат. Помогите с example или обясните step-by-step как сконфигурироват. Буду очен признателен. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 39 7 января, 2006 Опубликовано 7 января, 2006 · Жалоба На AT91RM9200 это вынлядит так. Думаю все основные моменты на AT91SAM7S64 будут теми же. //Настройка AIC AIC_IDCR=0xFFFFFFFF; //Запретим все прерывания for(unsigned int i=0; i<8; i++) AIC_EOICR=0; AIC_IECR=(1<<1); //Разрешим прерывания Source 1 ST_IER=(1<<2); //Разрешить прерывания RTTINC AIC_SVR1=(int) &Interrupt_Source1; __enable_interrupt(); void Interrupt_Source1(void) { int st_sr=ST_SR; if(st_sr&0x00000004) { //Прерывание RTC (1 раз в секунду) } } #pragma vector=0x18 __irq __arm void interrupt_handler(void) { void (*interrupt_task)(); unsigned int vector; vector = AIC_IVR; // Get interrupt vector. interrupt_task = (void(*)())vector; AIC_IVR = 0; // Acknowledge interrupt in VIC. (*interrupt_task)(); // Execute the task associated with this interrupt. AIC_EOICR=0; return; } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться