ARM-Interrupts/PIT laufen nicht

OP #568311
Lesenswert?
• ▲
▼
Servus,

ich versuche gerade den PIT meines at91sam7x zum Laufen zu überreden.
Anbei der Code meiner main-Routine. Jedoch wird nie die Service-Routine 
aufgerufen.

Ist der Code soweit in Ordnung, und falls ja, wo könnte ich weiter 
suchen?

Gruß,
Christophe
Angehängte Dateien:
Gast #568319
Lesenswert?
• ▲
▼
Kurz quergelesen sehe ich dort nichts, was die Interrupt-Bits im CPSR 
steuert.

Wäre auch eher unüblich. Gängig ist, in main() bei abgeschalteten 
Interrupts loszulegen, um die erst nach der kompletten Initialisierung 
freizugeben.
Persönliche Seite #568320
Lesenswert?
• ▲
▼
du hast einiges beim init des PIT vergessen. Dieser Code funktioniert 
bei mir.

void configure_pit(void)
{
  volatile unsigned long pimr = 0;

  /* Configure a resolution of 10 ms */
  //- Grundfrequenz 36,864000 MHz
  //- mck /16 /100Hz = 10ms

  //AT91C_BASE_PITC->PITC_PIMR = (MCK / (16 * 100)) - 1; //- 10ms - 
100Hz

  /* Enable interrupts */
  /* Disable the interrupt on the interrupt controller */
  AT91C_BASE_AIC->AIC_IDCR = (1 << AT91C_ID_SYS);

  /* Save the interrupt handler routine pointer and the interrupt 
priority */
  AT91C_BASE_AIC->AIC_SVR[AT91C_ID_SYS] = (unsigned long) cmx_irq;
  /* Store the Source Mode Register */
  AT91C_BASE_AIC->AIC_SMR[AT91C_ID_SYS] = 
AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL | AT91C_AIC_PRIOR_LOWEST;
  /* Clear the interrupt on the interrupt controller */
  AT91C_BASE_AIC->AIC_ICCR = (1 << AT91C_ID_SYS);

  /* Enable the interrupt on the interrupt controller */
  AT91C_BASE_AIC->AIC_IECR = (1 << AT91C_ID_SYS);

  /* Enable the interrupt on the pit */
  pimr = AT91C_BASE_PITC->PITC_PIMR;
  AT91C_BASE_PITC->PITC_PIMR = pimr | AT91C_PITC_PITIEN;

  /* Enable the pit */
  pimr = AT91C_BASE_PITC->PITC_PIMR;
  AT91C_BASE_PITC->PITC_PIMR = pimr | AT91C_PITC_PITEN;
}

Gruss

Steffen

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.