Hallo!
Habe im IAR Workbench für MSP einen einfachen Beispielcode von Ti
eingefügt (http://focus.ti.com/docs/prod/folders/print/msp430f247.html)
und von USCI0 auf USCI1 umgeändert.
Der code sieht jetzt wie folgt aus:
1 | #include "msp430x24x.h"
|
2 |
|
3 | void main(void)
|
4 | {
|
5 | WDTCTL = WDTPW + WDTHOLD; // Stop WDT
|
6 |
|
7 | // set SCLK to calibrated 1 MHz DCO
|
8 | BCSCTL1 = CALBC1_1MHZ;
|
9 | DCOCTL = CALDCO_1MHZ;
|
10 |
|
11 | // setup ACLK source and parameters, external crystal is 32.768 kHz
|
12 | //BCSCTL3 = LFXT1S_0 | XT2S_0 | XCAP_1;
|
13 |
|
14 | if (BCSCTL1 == 0xFF) // Check flash erasure
|
15 | while(1); // If DCO constants invalid,trap CPU
|
16 | P3SEL = 0x60; // P3.6,7 = USCI_1 TXD/RXD
|
17 | UCA1CTL1 |= UCSSEL_2; // SMCLK
|
18 | UCA1BR0 = 8; // 1MHz 115200
|
19 | UCA1BR1 = 0; // 1MHz 115200
|
20 | UCA1MCTL = UCBRS2 + UCBRS0; // Modulation UCBRSx = 5
|
21 | UCA1CTL1 &= ~UCSWRST; // **Initialize USCI state machine**
|
22 | IE2 |= UCA1RXIE; // Enable USCI_A0 RX interrupt
|
23 |
|
24 | // __bis_SR_register(LPM0_bits + GIE); // Enter LPM0, interrupts enabled
|
25 | }
|
26 |
|
27 | // Echo back RXed character, confirm TX buffer is ready first
|
28 | #pragma vector=USCIAB1RX_VECTOR
|
29 | __interrupt void USCI1RX_ISR(void)
|
30 | {
|
31 | while (!(IFG2&UCA1TXIFG)); // USCI_A0 TX buffer ready?
|
32 | UCA1TXBUF = UCA1RXBUF; // TX -> RXed character
|
33 | }
|
Beim Compilieren erhalte ich vom Linker folgende Fehlermeldung
1 | Error[e16]: Segment INTVEC (size: 0x24 align: 0x1) is too long for segment definition. At least 0x4 more bytes needed. The problem occurred while
|
2 | processing the segment placement command "-Z(CODE)INTVEC=FFE0-FFFF", where at the moment of placement the available memory ranges were
|
3 | "CODE:ffe0-ffff"
|
4 | Reserved ranges relevant to this placement:
|
5 | ffe0-ffff INTVEC
|
Kann mir jemand sagen, wo der Fehler liegt?
Danke für die Hilfe!
Gruß
Tim