MSP430 Interrupt Vector Syntax

Gast #6043128
Hallo zusammen,

ich habe ein kleines Programm geschrieben, welches mithilfe von Timer_A 
im Continous Mode eine ISR ausführt
1
#pragma vector=TIMER0_A1_VECTOR
2
__interrupt void foobar(void)
3
{
4
    // code omitted
5
}

Die ISR wird beim Überlauf von Timer_A korrekt aufgerufen.

Ich würde nur gerne verstehen WARUM der Vector Timer0_A1_VECTOR heißen 
muss.

Meine Vermutung:
TIMERn_Ax_VECTOR
* n steht für die "Instanz" des Timers - in diesem Fall 0
* x ist einfach nur ein Zahl um zwischen CCIFG0 und den anderen IFGs zu 
unterscheiden

Ist meine Vermutung korrekt oder kann mich jemand bitte über die 
Benamung des Vectors aufklären?

Vielen Dank.
Gast
> Timer0_A1_VECTOR

Weil es im Startupcode eine weak Definition fuer diesen Wert gibt.
Wenn man das Dingens also neu benamsen will, kann Mann das gerne tun.
Dann aber an beiden Stellen.
Gast
weil es in deiner dem prozessor zugehörenden heder so heisst.
sollte im compilerverzeichnis liegen un hatt dann z.B:
(CCS9 MSP430 FR5994, damit <msp430fr5994.h>)
#define TIMER0_A1_VECTOR       (44 * 1u)                     /* 0xFFE8 
*/
Gast
Klar, dass das nur eine Benamung ist die in der Headerdatei zum 
MSP430FR6898 ist. Aber ich frage mich, wie würde ich herausfinden, dass 
genau TIMER0_A1_VECTOR genutzt werden muss um auf den Überlauf von 
Timer_A zu reagieren? Ich habe den passenden Vector nur über 
Beispiel-Programme herausfinden können..
in der Dokumentation konnte ich auch nichts passendes finden.. nur den 
Word Offset für TA0IFG.. oder muss ich tatsächlich den Offset in der 
Headerdatei raussuchen und den entsprechenden #define nutzen? Oo
dummschwaetzer schrieb:
> #define TIMER0_A1_VECTOR       (44 * 1u)                     /* 0xFFE8
> */

Ohne den Kommentar 0xFFE8 wüßte ich jetzt nicht, welcher Vektor aus 
Table6-4 damit gemeint sein soll. Für TA0 gibt es ja 2 Vektoren.
Die TI-Datenblätter scheinen da wirklich keine Hilfe zu sein.

Bei den AVRs ist das sauber gelöst. Die Namen in den Header-Files sind 
exakt diejenigen, die im Datenblatt stehen, mit "_vect" am Ende. 
Leerzeichen werden als "_" geschrieben.
Z.B. im Datenblatt steht in der Tabelle "TIMER1 COMPA", dann steht im 
io.h:
1
#define TIMER1_COMPA_vect _VECTOR(6)
Gast
Genau ein solches System hinter der Benamung muss es doch auch bei dem 
genannten Vector geben. Allein den richtigen Namen an dem Kommentar 
festzumachen finde ich etwas umständlich..
jha schrieb:
> Genau ein solches System hinter der Benamung muss es doch auch bei dem
> genannten Vector geben.

Diese Namen sind zum Teil historisch gewachsen, es ist also nicht 
unbedingt zielführend, nach einem System zu fragen. :)

Im Zweifelsfall solltest du in der Header-Datei nachschauen.

Und das ist auch die einzige Stelle, wo du die Symbole für 
Interrupt-Vektoren findest (das Handbuch und die Beispielprogramme 
benutzen nur die Zahlen):
1
/* T0_A3IV Definitions */
2
#define TA0IV_NONE             (0x0000)       /* No Interrupt pending */
3
#define TA0IV_TACCR1           (0x0002)       /* TA0CCR1_CCIFG */
4
#define TA0IV_TACCR2           (0x0004)       /* TA0CCR2_CCIFG */
5
#define TA0IV_6                (0x0006)       /* Reserved */
6
#define TA0IV_8                (0x0008)       /* Reserved */
7
#define TA0IV_TAIFG            (0x000A)       /* TA0IFG */

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 6 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.