[an error occurred while processing this directive]
|
Как работать с внешними прерываниями(INT0,INT1...)? DSP/BIOS не использую, пользуюсь CSL.
Вот пример кода
IRQ_globalDisable();
IRQ_clear(IRQ_EVT_INT0);
IRQ_plug(IRQ_EVT_INT0,&Func0);
IRQ_enable(IRQ_EVT_TINT0);
IRQ_clear(IRQ_EVT_INT1);
IRQ_plug(IRQ_EVT_INT1,&Func1);
IRQ_enable(IRQ_EVT_TINT1);
IRQ_globalEnable();
Причем перед всем этим делаю IRQ_setVecs((Uint32)(&VECSTART));
как в примере от таймера ! (C:\cslc5500\examples\generic5509\csl\timer\)
Трасировал, смотрел регистр IER1 - нифига там не устанавливается и не меняется... в чем фишка ???
Примерно тоже делал для таймера - работает !!! Вот для таймера
void My_Timer1_Init(){
TIMER_Config TCfg;
IRQ_globalDisable();
HTimer1 = TIMER_open(TIMER_DEV1,TIMER_OPEN_RESET);
Timer1event = TIMER_getEventId(HTimer1);
IRQ_clear(Timer1event);
IRQ_plug(Timer1event,&Timer1Isr);
TIMER_stop(HTimer1);
TIMER_getConfig(HTimer1,&TCfg);
TCfg.tcr |= 0x800|0x0400 | 0x0020 | 0x08;
TCfg.tcr &= ~0x1004;
TIMER_config(HTimer1,&TCfg);
TCfg.prsc = 0x00FF;
TCfg.prd = 0xFFFF;
TIMER_config(HTimer1,&TCfg);
TCfg.tcr &= ~0x0400; //TLB;
TIMER_config(HTimer1,&TCfg);
// Enable Timer interrupt
IRQ_enable(Timer1event);
// Enable all maskable interrupts
IRQ_globalEnable();
} // My_TIMER1_Init();
Что не так ? Кто делал похожее ?
E-mail: info@telesys.ru