www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Interrupts / Timer/ MSP430F449


Autor: Styx (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Community,
erst mal ein frohes Fest und ein guten Rutsch ins neue Jahr.

Nun zu meinem Problem,
ich suche schon Tage lang verzweifelt danach wie ich einen Interrupt in 
C ordentlich einbinde.

Ich will den TimerA 16Bit-Timer des MSP benutzen.
Habe mir den User Guide zu dem Timer durchgelesen aber trotzdem keine 
Ahnung wie ich den implementieren muss, geschweige denn wie ich das 
anstelle dem Timer einen Wert zu übergeben von dem er dann auf 0 runter 
zählt und dann ein Interrupt auslöst.

Hier kommt dann mein nächstes Problem, wie schreibe ich eine ISR in C?

Hoffe ihr könnt mir helfen...
Diese verflixte Projektarbeit ist nicht zum aushalten.

Im Anhang der Teil des User Guides zum Thema Timer A.

Danke
MfG
Styx

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>ich suche schon Tage lang verzweifelt danach wie ich einen Interrupt in
>C ordentlich einbinde.
Das sagt Dir der User Guide Deiner Entwicklungsumgebung!

>Hier kommt dann mein nächstes Problem, wie schreibe ich eine ISR in C?
s.o.

>Ich will den TimerA 16Bit-Timer des MSP benutzen.
>Habe mir den User Guide zu dem Timer durchgelesen aber trotzdem keine
>Ahnung wie ich den implementieren muss, geschweige denn wie ich das
>anstelle dem Timer einen Wert zu übergeben von dem er dann auf 0 runter
>zählt und dann ein Interrupt auslöst.
Sorry, aber ich finde im User Guide steht genau das alles drin.
TI hat aber auch Beispiel-Code-Fetzen... so als Anregung...

Autor: Styx (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hey Stefan,

naja ich finde nicht das mir das IAR ordentlich beschreibt.
Muss dazusagen ich hab noch nicht wirklich viel damit gearbeitet und 
finde die beschreibung schon etwas dürftig.

Was die einzelnen Bits mir sagen, habe ich im User-Guide auch 
verstanden, nur wie übertrage ich das in C?

Ein Beispiel Code dazu würde mir schon reichen...

Im IAR steht dass ich den interrupt so definiere

__interrupt void timer_interrupt(void);


So und woher weiß der jetzt bei welchem Flag der auslöst?

MfG

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ein Beispiel Code dazu würde mir schon reichen...
Ich sagte bereits, dass TI Beispiele hat!
Du musst nur Deinen MSP430F4xx in die Suchmaske eingeben und die 
Beispiele downloaden!

>Im IAR steht dass ich den interrupt so definiere
>__interrupt void timer_interrupt(void);
>So und woher weiß der jetzt bei welchem Flag der auslöst?
Indem Du die ISR richtig einbindest, z.B.:
#pragma vector=TIMERA0_VECTOR
oder
#pragma vector=TIMERA1_VECTOR

>Was die einzelnen Bits mir sagen, habe ich im User-Guide auch
>verstanden, nur wie übertrage ich das in C?
Ähh, ich dachte das ist eine Projektarbeit?
Was habt ihr bzw. was hast Du das ganze Jahr gemacht / gelernt?

Etwas Eigeninitiative ist schon notwendig, wenn Dir hier jemand helfen 
soll.
Im Moment hat das etwas von "...wer macht mir meine Hausaufgaben..."
Das kommt nicht sonderlich gut an!

Autor: Jörg S. (joerg-s)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Styx schrieb:
> Im IAR steht dass ich den interrupt so definiere
> __interrupt void timer_interrupt(void);
> So und woher weiß der jetzt bei welchem Flag der auslöst?
Siehe dazu die msp430x44x.h Datei im inc Verzeichnis vom IAR Compiler. 
Da steht ganz unten ne Liste drin:
/************************************************************
* Interrupt Vectors (offset from 0xFFE0)
************************************************************/

#define BASICTIMER_VECTOR   (0 * 2u)  /* 0xFFE0 Basic Timer */
#define PORT2_VECTOR        (1 * 2u)  /* 0xFFE2 Port 2 */
#define USART1TX_VECTOR     (2 * 2u)  /* 0xFFE4 USART 1 Transmit */
#define USART1RX_VECTOR     (3 * 2u)  /* 0xFFE6 USART 1 Receive */
#define PORT1_VECTOR        (4 * 2u)  /* 0xFFE8 Port 1 */
#define TIMERA1_VECTOR      (5 * 2u)  /* 0xFFEA Timer A CC1-2, TA */
#define TIMERA0_VECTOR      (6 * 2u)  /* 0xFFEC Timer A CC0 */
#define ADC12_VECTOR          (7 * 2u)  /* 0xFFEE ADC */
#define USART0TX_VECTOR     (8 * 2u)  /* 0xFFF0 USART 0 Transmit */
#define USART0RX_VECTOR     (9 * 2u)  /* 0xFFF2 USART 0 Receive */
#define WDT_VECTOR          (10 * 2u) /* 0xFFF4 Watchdog Timer */
#define COMPARATORA_VECTOR  (11 * 2u) /* 0xFFF6 Comparator A */
#define TIMERB1_VECTOR      (12 * 2u) /* 0xFFF8 Timer B CC1-6, TB */
#define TIMERB0_VECTOR      (13 * 2u) /* 0xFFFA Timer B CC0 */
#define NMI_VECTOR          (14 * 2u) /* 0xFFFC Non-maskable */
#define RESET_VECTOR        (15 * 2u) /* 0xFFFE Reset [Highest Priority] */

#define UART1TX_VECTOR      USART1TX_VECTOR
#define UART1RX_VECTOR      USART1RX_VECTOR
#define UART0TX_VECTOR      USART0TX_VECTOR
#define UART0RX_VECTOR      USART0RX_VECTOR
#define ADC_VECTOR          ADC12_VECTOR

Autor: Styx (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ähh ne so ist es nicht,

ich will nicht dass mir jmd meine Hausaufgabe macht,
nur das tolle ist dass wir nie irgendwas mit dem MSP430 gemacht haben.
Sondern nur mit dem ATmega8. Des weiteren haben wir nie in C sondern nur 
in C# oder VBA programmiert und das wiederum nicht in zusammenhang mit 
Microcontrollern.

Das "pragma" habe ich zum Beispiel noch nie gehört und aus dem User 
Guide geht das nicht hervor was das nun sein soll....
Deswegen würde ich gerne mal ein Programm in C sehen welches einen 
Interrupt benutzt und wie er das tut.

Zum Thema Beispiel Codes habe ich bis jett schon viele gefunden, aber in 
Assembler....
Und die anderen Codes die ich gefunden habe in C benutzen keine 
Interrupts...

Nicht sonderlich hilfreich.

Autor: Jörg S. (joerg-s)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Beispiele siehe:
http://www.ti.com/lit/zip/slac019

In fet440_ta_02.c gibt es Timer A mit ISR.

Autor: Styx (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hey super,

genau sowas habe ich gesucht.

Vielen Dank.

MfG
Styx

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.