Guten Tag Liebe Freunde brauche mal kurz eure Hilfe denn ich bin am verzweifeln. Habe folgendes BSp. Programm von TI Seite runtergeladen und will es testen ob alles funktioniert. Kriege aber immer folgende Meldung unknown #pragma 'vector' Hier ist das Programm #include <msp430x14x.h> void main(void) { volatile unsigned int i; WDTCTL = WDTPW + WDTHOLD; // Stop WDT P3SEL |= 0xC0; // P3.6,7 = USART1 option select BCSCTL1 &= ~XT2OFF; // XT2on do { IFG1 &= ~OFIFG; // Clear OSCFault flag for (i = 0xFF; i > 0; i--); // Time for flag to set } while ((IFG1 & OFIFG)); // OSCFault flag still set? BCSCTL2 |= SELM_2 + SELS; // MCLK= SMCLK= XT2 (safe) ME2 |= UTXE1 + URXE1; // Enable USART1 TXD/RXD UCTL1 |= CHAR; // 8-bit character UTCTL1 |= SSEL1; // UCLK = SMCLK UBR01 = 0x45; // 8Mhz/115200 - 69.44 UBR11 = 0x00; // UMCTL1 = 0x2C; // modulation UCTL1 &= ~SWRST; // Initialize USART state machine IE2 |= URXIE1; // Enable USART1 RX interrupt _BIS_SR(LPM0_bits + GIE); // Enter LPM0 w/ interrupt } #pragma vector=USART1RX_VECTOR __interrupt void usart1_rx (void) { while (!(IFG2 & UTXIFG1)); // USART1 TX buffer ready? TXBUF1 = RXBUF1; // RXBUF1 to TXBUF1 } Ich weiß nicht was ich hier machen muss damit es endlich funzt bin am Verzeifeln....... :-(
Meine Glaskugel meint du verwendest den mspgcc. interrupt(USART1RX_VECTOR) uart1rx_isr(void)
Der Interrupt-Vektor heisst wahrscheinlich anders als im Beispiel. Ich meine diesen hier: "USART1RX_VECTOR" Guck mal in der Header Datei nach, die von IAR eingebunden wird, wie der Vektor richtig heisst. Die Datei müsste in etwa so heissen, wobei die xxxx dem eingesetzten Typ des MSP entsprechen: msp430xxxx.h Die Datei ist je nach Typ ziemlich gross, such einfach mal nach WDT_VECTOR, den sollten alle MSP's haben.
Also soll ich anstatt #pragma vector=USART1RX_VECTOR __interrupt void usart1_rx (void) { nur interrupt(USART1RX_VECTOR) uart1rx_isr(void) schreiben?
Kommt auf deinen Compiler an. Daher ja auch der Witz mit der Glaskugel.
Meine Glaskugel ist gerade beim Ölwechsel. Mit MSPGCC: #include <signal.h> .... ..... ...... interrupt (UART1RX_VECTOR) RxIsrUSART1(void) { }
> Meine Glaskugel ist gerade beim Ölwechsel.
Ah, du scheinst bereits das neue Modell mit Viertaktmotor zu haben.
Oder so:
1 | #ifdef __ICC430__
|
2 | #pragma vector=UART1RX_VECTOR //IAR Compiler
|
3 | __interrupt void USART1_RX_ISR (void){ |
4 | #else
|
5 | interrupt (UART1RX_VECTOR) USART1_RX_ISR(void) //GCC Compiler |
6 | {
|
7 | #endif
|
Vielleicht hat er den CrossWorks Compiler von Rowley http://www.rowley.co.uk/msp430/ Dann müsste Dein Konstrukt noch ein wenig erweitert werden :-)
Jaja, war ja nur ein Beispiel. Für den CCE gibts auch noch eine extra Erkennung, aber mittlerweile sind IAR und CCE3 Syntax ja gleich.
Crossworks "versteht" in der 2.x-Version aber auch die IAR-Syntax.
Wenn ich anstatt #pragma vector=USART1RX_VECTOR __interrupt void usart1_rx (void) void uart_txIntHandler1(void)__interrupt[UART1TX_VECTOR] schreibe geht es nun
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.