А как вы его включаете?
Вообще кажется, что он срабатывает снова, сразу как вы его сбрасываете.
Посмотрите просто в сигнал тапе и все будет понятно.
вот например у меня устанавливается таймер и сбрасывается (но это с VIC, хотя разницы особо нет:
Код
void ru_timer_isr() {
IOWR(PERIPHERAL_TIMER_RU_BASE,0,0);
...
}
void ru_timer_irq_init()
{
alt_u32 timer_cnt = sys_freq; // 1sec
IOWR(PERIPHERAL_TIMER_RU_BASE, 2, timer_cnt & 0xFFFF);
IOWR(PERIPHERAL_TIMER_RU_BASE, 3, (timer_cnt>>16) & 0xFFFF);
IOWR(PERIPHERAL_TIMER_RU_BASE, 0, 0x00);
IOWR(PERIPHERAL_TIMER_RU_BASE, 1, 0x07); // timer start, cont, irq
alt_ic_isr_register( 0x00, PERIPHERAL_TIMER_RU_IRQ, ru_timer_isr, NULL, 0x00 );
}