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!
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.
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 | }
|
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...
Da muss man vielleicht noch irgendeine Art signal.h oder interrupt.h oder includieren? Muss man beim gcc zumindest.
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) { ... }
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.