ARM7: Funktionsweise des Interrupt Moduls

OP #1131770
Hallo,

hat jemand vielleicht einen Link auf eine "gut verständliche" Erklärung 
in deutsch (ausnahmsweise..) wie die Interrupts des ARM7 zu benutzen 
sind? Egal wieviel Beispielcode ich auch lese und durchs Manual schaue, 
entweder bin ich zu blöde zu verstehen wie das funktioniert oder es ist 
einfach nur schlecht erklärt. Viele Beispielcodes sind vor lauter 
Benutzung von Zeigern und Zeigern auf Zeiger kaum mehr zu verstehen. De 
facto nutze ich derzeit Code aus Beispielen ohne ihn wirklich zu 
verstehen.

Den hier zB habe ich teilweise selbst geschrieben im unteren Teil um 
eine Zeitbasis zu haben, teilweise aus einem Beispiel von Rowley 
kopiert. Wa hat es mit diesen Slots auf sich und
1
// Ruft einen IRQ alle Millisekunden auf
2
void InitTimer0(unsigned int millisec)
3
{
4
    #define TIMER0_IRQ    4
5
    #define TIMER1_IRQ    5
6

7
     // Timer 0 ist ein IRQ interrupt
8
    VICIntSelect&= ~(1<<TIMER0_IRQ);
9
    // Benutze slot 0 für timer 0 interrupt, Bit 5 = 1 => Slot aktivieren
10
    VICVectCntl0=(1<<5) | TIMER0_IRQ;
11
    // Enable timer 0 interrupt
12
    VICIntEnable = (1<<TIMER0_IRQ);
13
    // Setze die Adresse der ISR für slot 0
14
    VICVectAddr0 = (unsigned int)timer0ISR;
15

16
    // Setze Timermatch 0 auf 1 Millisekunde
17
    T0MR0 = PLL_GetAPBClock()/1000;
18
    // Setze den Timer 0 prescale counter auf den Wert der Parameterliste
19
    T0PR = millisec;
20
    // Reset timer 0
21
    T0TCR = 0;
22
    // Match = IRQ auslösen und Timer resetten
23
    T0MCR |= T0MCR_Interrupt_on_MR0_MASK | T0MCR_Reset_on_MR0_MASK;
24
    // Start timer 0
25
    T0TCR = T0TCR_Counter_Enable_MASK;
26

27
     // Enable Interrupts
28
    __ARMLIB_enableIRQ();

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.