MSP430 - Interrupt einstellen

OP (Firma: Lust) #801167
Lesenswert?

Hallo Experten,

kann mir einer von euch eine schnelle Einweisung geben, wie man einen 
Interrupt für einen Timer initialisiert ?

// Timer A0 interrupt service routine
#pragma vector=TIMERA0_VECTOR     ??
__interrupt void Timer_A (void)   ??

Was bedeuten diese Zeilen ?
Interrupt-Vektor-Tabelle erstreckt sich doch von 0xffe0 bis 0xfffe.
Wie lege ich dort den Interrupt für TimerA fest?

Mfg
Daniel
Gast #801180
Lesenswert?

Damit der Interrupt angesprungen wird, musst du die globalen interrupts 
aktivieren (GIE) und natürlich deinem Timer auch sagen das er Interrupts 
benutzen soll (TAIE).
Am besten schaust du dir die Beispiele von TI an.
Gast #801182
Lesenswert?

>Was bedeuten diese Zeilen ?
1
#pragma vector=TIMERA0_VECTOR     ??
2
__interrupt void Timer_A (void)   ??

TIMERA0_VECTOR ist eine Defintion des IAR-Compilers und enthält eben 
genau die Vektoradresse des Timer-A0 IRQ's
Durch die #pragma-Anweisung wird die darauffolgende Zeile:
__interrupt void Timer_A (void)
mit genau diesem IRQ-Vektor "verbunden" und die darin enthaltenen 
Codezeilen, beim Auftreten des entsprechenden Interrupts ausgeführt

>Wie lege ich dort den Interrupt für TimerA fest?
Mit dem von Dir aufgeführten Code Bsp ;-)
#801184
Lesenswert?

Das da oben sind nur Kompiler-Anweisungen, die den Kompiler veranlassen, 
die Interrupt-Vektoren so einzustellen, dass deine ISR angesprungen 
wird.

Den Interrupt freigeben musst du extra noch, wie Jörg schon schrieb.

Immer zuerst die Beispiel-Codes anschauen, es gibt eigentlich für jedes 
Peripheriemodul ein oder mehrere Beispiele.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren