www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik msp430 CCE #pragma geht nicht


Autor: Ulrich M. (Firma: ---) (ulrich1267)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Forum,

als Anfänger hoffe ich auf Eure Hilfe. Ich habe auch schon selbst 
fleißig gesucht, komme aber nicht weiter.

Ich will mein Progrämmchen, dass ich vor Monaten angefangen habe nun auf 
einem anderen Rechner weiterschreiben und habe die Entwicklungsumgebung 
gewechselt. Jetzt verwende ich Code Composer Essentials. Und prompt 
funktionieren meine Timer-Interrupts nicht mehr.

Die sind folgendermaßen deklariert:

#pragma vector=TIMERA0_VECTOR
__interrupt void Timer(void)
{
  bla...;
}

#pragma vector=TIMERA1_VECTOR
__interrupt void PulseTimer(void)
{
  bla...;
}

Der Compiler warnt und meckert: unrecognized #pragma

Und er hat recht, denn TIMERAx_VECTOR ist nirgends definiert (In keinem 
Header).

Nun meine Frage: Wie kann ich das alternativ programmieren (sprich ohne 
#pragma)?

Vielen Dank im Voraus!

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
All diese Dinge sind Compiler-spezifische Erweiterungen
von C. D.h. du musst in der Doku deines neuen Compilers
stöbern, wie die Syntax dort lauten muss.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Steht doch extra in den C-Demos für den CCE, die´s auf der TI Homepage 
gibt:
// Timer A0 interrupt service routine
__interrupt void Timer_A (void);
TIMERA0_ISR(Timer_A)
__interrupt void Timer_A (void)
{
....
}

Autor: Ulrich M. (Firma: ---) (ulrich1267)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für die Antwort. Leider reagiert der Compiler auf diesen 
Vorschlag mit weiteren Fehlermeldungen: #
 "Timer_A ist not a type name"

Ist mir schon klar, lieber Compiler, das dass kein Typname ist...

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da muss man vielleicht noch irgendeine Art signal.h oder interrupt.h 
oder includieren? Muss man beim gcc zumindest.

Autor: Ulrich M. (Firma: ---) (ulrich1267)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also, heute habe ich noch mal gefummelt und es hinbekommen. Die original 
vorgesehenen Makros funktionieren aus mir unbekannten Gründen nicht. 
Wenn man sie aber einzeln aufdröselt und alles manuell hinschreibt, dann 
geht's.
So funktioniert es jetzt:

__interrupt void ClockTimer(void);
void (* const ClockTimer_ptr)(void) = &ClockTimer;
#pragma DATA_SECTION(ClockTimer_ptr,".int06")
__interrupt void ClockTimer(void)
{
...
}

__interrupt void PulseTimer(void);
void (* const PulseTimer_ptr)(void) = &PulseTimer;
#pragma DATA_SECTION(PulseTimer_ptr,".int05")
__interrupt void PulseTimer(void)
{
...
}

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du dir schon CCE antust....wieso nimmst du da nicht gleich den GCC? 
Sonst kommst du ja recht schnell auch wieder an die 8k Grenze und zum 
GCC gibts hier im Forum usw auch viel mehr Material.

Autor: Ulrich M. (Firma: ---) (ulrich1267)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hey Christian,

meinst Du damit den mspgcc? Gibt es dafür irgendeine Anleitung? Ich 
würde den gerne in Eclipse (von mir aus auch CCE) integrieren. Oder 
kannst Du eine andere Umgebung empfehlen (sag jetzt nicht UltraEdit...) 
Wie ist das mit den Debugger? Hast Du damit Erfahrungen? Was nimmst Du 
für eine Entwicklungsumgebung?

Uli

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich benutze den auch, sogar "professionell" auf Arbeit. Anleitung: 
http://www.mikrocontroller.net/Eclipse%20und%20MSPGCC/ Geht in Eclipse 
sehr leicht zu integrieren. Achja, bei mir funktionieren nur die älteren 
Versionen (bis Mai 2006) richtig mit dem TI USB Debugger. Debugging ist 
manchmal bissl instabil, aber benutzbar.

Bei der Anleitung ist ein kleiner Fehler drin. Wenn man die 
Debug-Umgebung erstellt, muss man nicht wie auf dem Bild den Cygwin 
Debugger auswählen, sondern den MSP430 GDB. Aber das versteht sich ja 
von selbst....

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.