Hallo, habe folgendes Problem mit dem MSPGCC und Eclipse. Aus irgendwelchen Gründen fehlt bei mir plötzlich die Interruptvectortabelle, die ja bei 0xFFxx liegt. Es steht da überall ein Vector zu einer einigen Adresse drin, die aber nur eine Sprung auf sich selber enthält. Benutze einen MSP4230F247 als Ziel. Es gibt keine Fehlermeldungen oder Warnungen die darauf deuten. bei anderen Projekten mit gleichem Compiler ist alles in Ordnung. Ich drehe mich seit Tagen im Kreis. Hat jemand eine Idee dazu ? Frohe Osten. Gruss KF26046
Wie wärs wenn du mal alles Notwendige als Projekt postest, sodass man da mal reinschauen kann? Gruß Oliver
Also ich würde ja darauf tippen, daß das Projekt einen Fehler enthält.
Ist denn die -mmcu Option bei Compiler und Linker (und ggf. Assembler) korrekt angegeben?
Dass ich das Project poste willst du nicht wirklich. Das Projekt an sich ist in Ordnung, es gibt keinen Fehler vom Compiler und -mmcu ist auch richtig gesetzt. Ich kann alles mit dem Debugger korrekt laden und bis auf die Interruopt geht auch alles soweit. Ich bin zwar kein Experte aber auch kein Anfänger. Hier weiß ich aber nicht weiter. Bin für jede Idee dankbar. Gruss
KF26046 schrieb: > Dass ich das Project poste willst du nicht wirklich. Nicht das ganze aber eines wo das nötigste drinne steht. Gruß Oliver
KF26046 schrieb: > Es steht da überall ein Vector zu einer einigen > Adresse drin, die aber nur eine Sprung auf sich selber enthält. Hm, der mspgcc hat doch diese Fail-Save Geschichte. Ein nicht initialisierter Int macht eigentlich nur ein RETI. Ganz sicher, dass die signal.h richtig drin ist? Welche Version vom mspgcc verwendest du eigentlich? Vielleicht kann man es ja nachvollziehen.
@Christina, das könnte ein Hinweis sein. Es gibt folgende Warnung: Description Resource Path Location Type c:\mspgcc\bin\../lib/gcc/msp430/4.5.3/../../../../msp430/include/signal. h #warning msp430-libc <signal.h> deprecated, using <legacymsp430.h> bikescout1 line 43 C/C++ Problem Ich habe diese aber bisher immer ignoriert, weil das bei allen meinen Projekten auftritt und die Interrupts trotzdem einwandfrei funktionieren. Allerdings waren das keine MSP430F247 Targets! Ich suche da mal weiter. Danke.
Ich habs gerade mal getestet. MSPGCC hab ich die 4.6.1 und die Vektoren werden erzeugt. Hab einfach das Timer A Demo genommen und die ISR Deklaration auf die neue uniarch geändert. Im Listing sind die Vektoren drin, und der Timer A Vektor zeigt auf die Timer A ISR.
1 | #include <msp430f247.h> |
2 | |
3 | int main(void) |
4 | {
|
5 | WDTCTL = WDTPW + WDTHOLD; // Stop WDT |
6 | P1DIR |= 0x01; // P1.0 output |
7 | CCTL0 = CCIE; // CCR0 interrupt enabled |
8 | CCR0 = 50000; |
9 | TACTL = TASSEL_2 + MC_2; // SMCLK, cont. mode |
10 | |
11 | _BIS_SR(LPM0_bits + GIE); // Enter LPM0 w/ interrupt |
12 | |
13 | return 0; |
14 | }
|
15 | |
16 | // Timer A0 interrupt service routine
|
17 | __attribute__((interrupt(TIMERA0_VECTOR))) |
18 | void Timer_A(void) |
19 | {
|
20 | P1OUT ^= 0x01; // Toggle P1.0 |
21 | CCR0 += 50000; // Add Offset to CCR0 |
22 | }
|
Christian, habe auf die neueste Version 4.6.3 umgestellt und jetzt scheint es zu klappen. Danke für den Tip, wäre ich nie drauf gekommen. Schönen Tag noch. Gruss
Hm, echt ulkig. Ich hab auch eine Weile mit dem 4.5 gearbeitet, da hatte ich auch keine Probleme.
Christian, deine Zweifel sind voll berechtigt! Die eigentliche Urache ist was ganz anderes. Hab es endliche herausgefunden. Hatte das aktuelle Projekt komprimiert, wodurch der Fehler nicht mehr auftrat nach dem Wechsel auf die neuen Version. Dann kam das Problem aber wieder! Da ich in meinem neuen umfangreichen Projekt, Sources von anderen Projekten mit anderen MSP430 Derivaten benutzt habe, habe ich bei einem einzigen Source vergessen, das Include-File zu ändern. Beim MSP430F247 ist die Vectortabelle größer und hat dementsprechend eine andere Basisadresse. Dummerweise hat nun den Compiler eine Mixtur aus beiden erstellt, was dann zu dem Problem führte, dass die erwarteten Vectoradressen quasi leer waren. Es war also meine eigene Dummheit! Soll anderen als Ansporn und Denkhilfe dienen! (hat mich eine Woche Freizeit gekostet!!) Gruss und danke trotzdem.
Naja, GCC ist da manchmal etwas schwer zu verstehen. Ich bin da wieder größtenteils weg. Wenn es geht, nutze ich CCE in der 16k Version. Auch privat. Debugging mit dem GDB über Eclipse ist einfach ein Krampf, da geht außer run und stop ja eigentlich gar nix weiter. Kein Vergleich zu den umfangreichen CCE Debugging Funktionen.
Christian, Debuggen kann ich Gott sei Dank mit einem Lauterbach Tool. Das Problem lag wirklich bei MSPGCC, bzw. bei mir. Gruss
Gegen den MSPGCC als Compiler will ich auch gar nichts gesagt haben. Der macht eine ausgezeichnete Arbeit. Das Debugging und di Projekterstellung und -Verwaltung kommt allerdings aus der Steinzeit. Leider hab ich keine Ahnung von Eclipse Plug-In Entwicklung, sonst hätte ich da wohl mal was weiter entwickelt.
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.