Gast
#3172222
Hallo,
ich möchte bei meinem AT91SAM9261 die Interrupts ausprobieren. Hierzu
habe ich mir aus den examples den PIT Interrupt "herausgepickt".
[c]
//----------------------------------------------------------------------
--------
/// Handler for PIT interrupt. Increments the timestamp counter.
//----------------------------------------------------------------------
--------
void ISR_Pit(void)
{
unsigned int status;
// Read the PIT status register
status = PIT_GetStatus() & AT91C_PITC_PITS;
dbg_Puts(AT91C_BASE_DBGU, "ISR\n\r");
if (status != 0) {
// Read the PIVR to acknowledge interrupt and get number of ticks
//timestamp += (PIT_GetPIVR() >> 20);
}
}
//----------------------------------------------------------------------
--------
/// Configure the periodic interval timer to generate an interrupt every
/// millisecond.
//----------------------------------------------------------------------
--------
void ConfigurePit(void)
{
// Initialize the PIT to the desired frequency
PIT_Init(1000, 96);
// Configure interrupt on PIT
AIC_DisableIT(AT91C_ID_SYS);
AIC_ConfigureIT(AT91C_ID_SYS, AT91C_AIC_PRIOR_HIGHEST, ISR_Pit);
AIC_EnableIT(AT91C_ID_SYS);
PIT_EnableIT();
// Enable the pit
PIT_Enable();
}
[\c]
Den Code habe ich in mein IAR Projekt integriert und entsprechend in den
internen SRAM (ab 0x300000, Vektoren ab 0x300000) gelinkt. Mein Problem
ist jetzt, dass er die ISR nicht ausführt. Deshalb gehe ich davon aus,
dass ich irgendwo in der Initialisierung nocht etwas vergessen habe.
Deshalb jetzt meine Fragen:
Welche zusätzlichen Schritte sind erforderlich?
Muss eventuell im Startup-Teil noch etwas integriert werden? (Ich habe
diesen Teil so belassen, wie IAR dies durch den Projekt-Wizard
bereitstellt)
Danke Tim