В примере BlinkyIRQ от Кейла я попробовал поменять слот прерываний. С IRQ слотом 0 программа на плате с LPC2294 работает нормально (отладка с U LINK в RAM).
// Setup the Timer Counter 0 Interrupt / void init_timer (void) {
// Timer 0 T0MR0 = 149999; // 10mSec = 150.000-1 counts T0MCR = 3; // Interrupt and Reset on MR0 T0TCR = 1; // Timer0 Enable
VICVectAddr0 = (unsigned long)tc0; // set interrupt vector in 0 VICVectCntl0 = 0x20 | 4; // use it for Timer 0 Interrupt VICIntEnable = 0x00000010; // Enable Timer0 Interrupt }
Однако если сменить IRQ слот на 1,
VICVectAddr1 = (unsigned long)tc0; // set interrupt vector in 0 VICVectCntl1 = 0x20 | 4; // use it for Timer 0 Interrupt
то программа в симуляторе работает нормальо, но в реале не работает, не появляются прерывания.
Если добавить Timer1 и поставить его на IRQ0, то станут работать оба прерывания.
Я наверно что то не дочитал до конца - должен быть IRQ0 всегда использованым ?
|