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


von Ulrich M. (Firma: ---) (ulrich1267)


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!

von Karl H. (kbuchegg)


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.

von Christian R. (supachris)


Lesenswert?

Steht doch extra in den C-Demos für den CCE, die´s auf der TI Homepage 
gibt:
1
// Timer A0 interrupt service routine
2
__interrupt void Timer_A (void);
3
TIMERA0_ISR(Timer_A)
4
__interrupt void Timer_A (void)
5
{
6
....
7
}

von Ulrich M. (Firma: ---) (ulrich1267)


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...

von Christian R. (supachris)


Lesenswert?

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

von Ulrich M. (Firma: ---) (ulrich1267)


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)
{
...
}

von Christian R. (supachris)


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.

von Ulrich M. (Firma: ---) (ulrich1267)


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

von Christian R. (supachris)


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....

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.