Forum: Mikrocontroller und Digitale Elektronik MSP430 UART und #pragma PROBLEM


von John Fistikis (Gast)


Lesenswert?

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.......

:-(

von beaker (Gast)


Lesenswert?

Meine Glaskugel meint du verwendest den mspgcc.

interrupt(USART1RX_VECTOR) uart1rx_isr(void)

von Johnny (Gast)


Lesenswert?

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.

von John Fistikis (Gast)


Lesenswert?

Also soll ich anstatt
#pragma vector=USART1RX_VECTOR
__interrupt void usart1_rx (void)
{

nur

interrupt(USART1RX_VECTOR) uart1rx_isr(void)

schreiben?

von Johnny (Gast)


Lesenswert?

Oh, beaker hat sicher recht.

von beaker (Gast)


Lesenswert?

Kommt auf deinen Compiler an. Daher ja auch der Witz mit der Glaskugel.

von Johnny (Gast)


Lesenswert?

Welchen Compiler hast Du denn?

von Gunb (Gast)


Lesenswert?

Meine Glaskugel ist gerade beim Ölwechsel.

Mit MSPGCC:

#include <signal.h>

....
.....
......

interrupt (UART1RX_VECTOR) RxIsrUSART1(void)
{

}

von Johnny (Gast)


Lesenswert?

> Meine Glaskugel ist gerade beim Ölwechsel.

Ah, du scheinst bereits das neue Modell mit Viertaktmotor zu haben.

von Christian R. (supachris)


Lesenswert?

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

von Johnny (Gast)


Lesenswert?

Vielleicht hat er den CrossWorks Compiler von Rowley 
http://www.rowley.co.uk/msp430/
Dann müsste Dein Konstrukt noch ein wenig erweitert werden :-)

von Christian R. (supachris)


Lesenswert?

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.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Crossworks "versteht" in der 2.x-Version aber auch die IAR-Syntax.

von John Fistikis (Gast)


Lesenswert?

Wenn ich anstatt

#pragma vector=USART1RX_VECTOR
__interrupt void usart1_rx (void)



void uart_txIntHandler1(void)__interrupt[UART1TX_VECTOR]

schreibe geht es nun

von Christian R. (supachris)


Lesenswert?

HGmm...welcher Kompiler ist denn das 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
Noch kein Account? Hier anmelden.