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.