Forum: Mikrocontroller und Digitale Elektronik ARM7: Funktionsweise des Interrupt Moduls


von Christian J. (elektroniker1968)


Lesenswert?

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();

von Mario (Gast)


Lesenswert?

Hast Du das schon gelesen?

http://www.mikrocontroller.net/articles/ARM-elf-GCC-Tutorial#Interruptarten

Vielleicht reicht das schon.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.