Hallo,
ich habe ein Problem mit dem Interrupt des UART0 vom MSP430F149.
Folgenden Code habe ich
1 | WDTCTL = WDTPW + WDTHOLD; // Stop WDT
|
2 | P3SEL |= 0x30; // P3.4,5 = USART0 TXD/RXD
|
3 | P1DIR |= 0x01;
|
4 | ME1 |= UTXE0 + URXE0; // Enable USART0 TXD/RXD
|
5 | UCTL0 |= CHAR; // 8-bit character
|
6 | UTCTL0 |= SSEL0; // UCLK = ACLK
|
7 | UBR00 = 0xA0; // 3.58Mhz 19200 - 186
|
8 | UBR10 = 0x01; //
|
9 | UMCTL0 = 0x00; // no modulation
|
10 | UCTL0 &= ~SWRST; // Initialize USART state machine
|
11 | IE1 |= URXIE0; // Enable USART0 RX interrupt
|
12 | _EINT();
|
13 | while(1)
|
14 | " {
|
15 | while (!(IFG1 & UTXIFG0)); // USART0 TX buffer ready?
|
16 | TXBUF0 = 0x22;
|
17 |
|
18 | for(a=0; a<= 900; a++)
|
19 | {
|
20 | for(i=0; i<= 800; i++)
|
21 | {
|
22 | }
|
23 | }
|
24 | }
|
25 | }
|
26 |
|
27 | #pragma vector=USART0RX_VECTOR
|
28 | __interrupt void usart0_rx (void)
|
29 | {
|
30 | P1OUT ^= 0x01;
|
31 | while (!(IFG1 & UTXIFG0)); // USART0 TX buffer ready?
|
32 | TXBUF0 = RXBUF0; // RXBUF0 to TXBUF0
|
33 | }
|
ist eigentlich größtenteils von einem TI Beispiel. Ich möchte nun in dem
"dauer senden" in der while-schleife ein empfangenes Zeichen wieder
zurück senden.
Also das "dauer senden" funktioniert aber wenn ich was schicke wird der
Interrupt nich ausgelöst????
Kann mir jemand helfen, danke