mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MSP430 UART Interrupts Probleme


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

Bewertung
0 lesenswert
nicht lesenswert
Salu zusammen

Ich versuche gerade das Beispiel von mathar für den UART zu übernehmen. 
Habe im Netz gesehen das es einige gibt die dies ohne Probleme 
einsetzen. Den Quellcode habe ich für meine Bedürfnisse bereits ein 
bisschen angepasst (init).

Das Problem sind aber die Interrupts. Eclipse und mspgcc wollen 
irgendwie die Interrupt Vektoren nicht akzeptieren. (siehe Screenshot)

Kann mir einer sagen was ich da machen muss? Habe ich vergessen etwas zu 
includen?

Merci schon einmal im Voraus für die Hilfe

Gruss reflection

Autor: Steven Wetzel (steven)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Das Problem sind aber die Interrupts. Eclipse und mspgcc wollen
> irgendwie die Interrupt Vektoren nicht akzeptieren. (siehe Screenshot)

Ja, schau mal in das Manual von mspgcc.

interrupt (blabla) IntServiceRoutine(void)

Das blabla steht in den includefiles
z.B. Für TimerA

interrupt (TIMERA0_VECTOR) IntServiceRoutine(void)

Für dich vermutlich

interrupt (UART1TX_VECTOR) IntServiceRoutine(void)
und
interrupt (UART1RX_VECTOR) IntServiceRoutine(void)

Autor: johnjoe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Beim Code Composer 2 stehen in den Include für die MSPs schon fertige 
Einbinderoutinen:

z.B. für TimerA CC0:

TIMERA0_ISR(func)

die ISR-Routine hat dann die Form:

interrupt void func(void)
{}

und fertig ist der Salat.

Weiss aber leider nicht, ob die auch so beim mspgcc drin stehen.

Gruss

Autor: reflection (Gast)
Datum:
Angehängte Dateien:
  • preview image for 2.gif
    2.gif
    51,5 KB, 343 Downloads

Bewertung
0 lesenswert
nicht lesenswert
Nun habe ich es so gemacht, aber er will nicht ;o) DAs mit dem #pragma 
stammt noch von IAR. Mit mspgcc sollte es so aussehen:

interrupt (UART1RX_VECTOR) usart1_rx(void) (gefunden auf 
mikrocontroller.net)

leider bringt er immer noch nen Error (siehe Screenshot)

Gruss

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die korrekte Syntax für den MSPGCC ist folgendermaßen:

interrupt (UART0RX_VECTOR) USART0_RX_ISR(void)
{

}

Außerdem muss die signal.h inkludiert werden.

Steht aber alles in der MSPGCC-Doku :)

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die von Dir verwendete Notation für Interrupthandler ist die 
IAR-Notation.

  #pragma vector=VEKTORNAME
  __interrupt void funktionsname(void)
  {
  }

mspgcc* will

  interrupt (VEKTORNAME) funktionsname(void)
  {
  }

Noch eine andere Variante wird von Rowley Crossworks verwendet:

  void funktionsname(void) __interrupt[VEKTORNAME]
  {
  }




*) siehe auch hier
http://mspgcc.sourceforge.net/manual/x918.html

Autor: reflection (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen

Vieeeeeeeeeeeeeeeeeeeelen Dank für Eure rasche Hilfe! Hat nur am include 
signal.h gelegen :o)
Eieieieiei, IAR ist zu mspgcc wohl doch recht unterschiedlich!

Grüesse aus der Schweiz

reflection

http://www.reflectionracing.ch

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So lässt sich der Code auf beiden Compilern übersetzen:
#ifdef __ICC430__
#pragma vector=UART0RX_VECTOR                  //IAR Compiler
__interrupt void USART0_RX_ISR (void){
#else
interrupt (UART0RX_VECTOR) USART0_RX_ISR(void)          //GCC Compiler
{
#endif

....

}


und
#ifndef __ICC430__
#include <signal.h>
#endif

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.