Gast
#2509825
Hallo Mikros!
Ich habe gerade einen Codefetzen zur Aktivierung eines Periodic Interval
Timers (PIT) für den ARM7TDMI entdeckt:
-------------------------------------------------------------------
void SYSTIMER_init() {
/* configure IRQ */
AT91C_BASE_AIC->AIC_IDCR = (1<<AT91C_ID_SYS); /*
disable SYS interrupt during configuration */
AT91C_BASE_AIC->AIC_SVR[AT91C_ID_SYS] = (unsigned
int)SYSTIMER_irqHandler; /* set IRQ handler address */
AT91C_BASE_AIC->AIC_SMR[AT91C_ID_SYS] =
AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL | 0x4; /* set interrupt source type
and priority */
AT91C_BASE_AIC->AIC_ICCR = (1<<AT91C_ID_SYS); /*
clear the SYS interrupt (may still be set) */
AT91C_BASE_AIC->AIC_IDCR = (0<<AT91C_ID_SYS); /*
remove SYS interrupt disabling from command register */
AT91C_BASE_AIC->AIC_IECR = (1<<AT91C_ID_SYS); /*
enable SYS interrupt */
/* configure PIT */
...
}
------------------------------------------------------------------
Nun frage ich mich, ob die Zeile "AT91C_BASE_AIC->AIC_IDCR =
(0<<AT91C_ID_SYS);" nicht eigentlich überflüssi ist. Muss man das IDCR
zurück auf 0 setzen oder reicht es, das IECR auf 1 zu setzen?
Grüße,
Paule