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
> 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)
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
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
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 :)
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
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
So lässt sich der Code auf beiden Compilern übersetzen:
1 | #ifdef __ICC430__
|
2 | #pragma vector=UART0RX_VECTOR //IAR Compiler
|
3 | __interrupt void USART0_RX_ISR (void){ |
4 | #else
|
5 | interrupt (UART0RX_VECTOR) USART0_RX_ISR(void) //GCC Compiler |
6 | {
|
7 | #endif
|
8 | |
9 | ....
|
10 | |
11 | }
|
und
1 | #ifndef __ICC430__
|
2 | #include <signal.h> |
3 | #endif
|
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.