Hallo,
ich habe ein Problem mit dem UART1 und dem SPI0 des MSP430F149. Hier mal
der c-Code:
1 | void init_spi0(void)
|
2 | {
|
3 | ME1 |= USPIE0; // Enable USART0 SPI mode
|
4 | UTCTL0 = CKPH+SSEL1+SSEL0+STC; // SMCLK, 3-pin mode
|
5 | UCTL0 = CHAR+SYNC+MM; // 8-bit SPI Master **SWRST**
|
6 | UBR00 = 0x02; // UCLK/2
|
7 | UBR10 = 0x00; // 0
|
8 | UMCTL0 = 0x00; // no modulation
|
9 | P3SEL |= 0x0E; // P3.1-3 SPI option select
|
10 | P3DIR |= 0x01; // P3.0 output direction
|
11 | }
|
12 |
|
13 | void init_uart1(void)
|
14 | {
|
15 | P3SEL = 0xC0; // P3.6,7 = USART1 TXD/RXD
|
16 | ME2 |= UTXE1 + URXE1; // Enabled USART1 TXD/RXD
|
17 | UCTL1 |= CHAR; // 8-bit character, SWRST=1
|
18 | UTCTL1 |= SSEL0; // UCLK = ACLK
|
19 | UBR01 = 0xCC; // 9600 from 1Mhz
|
20 | UBR11 = 0x04;
|
21 | UMCTL1 = 0x4A; // Modulation
|
22 | UCTL1 &= ~SWRST; // Initialize USART state machine
|
23 | }
|
24 |
|
25 | void main(void)
|
26 | {
|
27 | ....
|
28 |
|
29 | init_spi0(); // Init SPI0
|
30 | init_uart1();
|
31 | ....
|
so jetzt zu meinem Problem. Nachdem ich den UART1 initialisiert habe,
funktioniert der SPI0 nichtmehr. D.h. er sendet nicht mehr. Durch Zufall
hab ich herausbekommen, dass wenn ich zuerst den UART1 initialisier und
dann den SPI0 das es dann funktioniert. Ich kann dann mit beiden
Schnittstellen senden und empfangen, so wie es sein sollte. Jetzt kann
man natürlich sagen, ich sollte zufrieden sein aber rein
interessenhalber würde mich das mal interessieren, warum
init_spi0(); // Init SPI0
init_uart1();
nicht geht und
init_uart1();
init_spi0(); // Init SPI0
geht. Ist da ein Fehler in der Initialisierung? Ich siehs einfach nicht.
Kann mir da jemand helfen....
Danke und Grüße