Hallo,
ich verwende den Beispielcode von ti (msp430x24x_uscia0_uart_01_115k.c)
um meine UART am MSP zu testen. Beim debugen sehe ich jedoch, dass er
die ganze Zeit in der while-Schleife hängen bleibt und somit wartet bis
der tx-buffer ready ist. Ich habe mir das Datenblatt durchgeschaut,
jedoch wüsste ich nicht was ich nun noch ändern sollte, damit er endlich
sein ready-flag erhält. Ich hoffe mir kann hier jemand weiterhelfen.
1 | {
|
2 | WDTCTL = WDTPW + WDTHOLD; // Stop WDT
|
3 | if (CALBC1_1MHZ ==0xFF || CALDCO_1MHZ == 0xFF)
|
4 | {
|
5 | while(1); // If calibration constants erased
|
6 | // do not load, trap CPU!!
|
7 | }
|
8 | BCSCTL1 = CALBC1_1MHZ; // Set DCO
|
9 | DCOCTL = CALDCO_1MHZ;
|
10 | P3SEL = 0x30; // P3.4,5 = USCI_A0 TXD/RXD
|
11 | UCA0CTL1 |= UCSSEL_2; // SMCLK
|
12 | UCA0BR0 = 8; // 1MHz 115200
|
13 | UCA0BR1 = 0; // 1MHz 115200
|
14 | UCA0MCTL = UCBRS2 + UCBRS0; // Modulation UCBRSx = 5
|
15 | UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine**
|
16 | IE2 |= UCA0RXIE; // Enable USCI_A0 RX interrupt
|
17 |
|
18 | __bis_SR_register(LPM0_bits + GIE); // Enter LPM0, interrupts enabled
|
19 |
|
20 |
|
21 | while(1)
|
22 | {
|
23 | while (!(IFG2&UCA0TXIFG)); // USCI_A0 TX buffer ready?
|
24 | UCA0TXBUF = zeichen++; // TX -> RXed character
|
25 | }
|