mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MSP430 UART1 und SPI0 Initialisierung


Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich habe ein Problem mit dem UART1 und dem SPI0 des MSP430F149. Hier mal 
der c-Code:
void init_spi0(void)
{
  ME1 |= USPIE0;                        // Enable USART0 SPI mode
  UTCTL0 = CKPH+SSEL1+SSEL0+STC;        // SMCLK, 3-pin mode
  UCTL0 = CHAR+SYNC+MM;                 // 8-bit SPI Master **SWRST**
  UBR00 = 0x02;                         // UCLK/2 
  UBR10 = 0x00;                         // 0
  UMCTL0 = 0x00;                        // no modulation
  P3SEL |= 0x0E;                        // P3.1-3 SPI option select
  P3DIR |= 0x01;                        // P3.0 output direction
}

void init_uart1(void)
{
  P3SEL = 0xC0;                         // P3.6,7 = USART1 TXD/RXD
  ME2 |= UTXE1 + URXE1;                 // Enabled USART1 TXD/RXD
  UCTL1 |= CHAR;                        // 8-bit character, SWRST=1
  UTCTL1 |= SSEL0;                      // UCLK = ACLK
  UBR01 = 0xCC;                         // 9600 from 1Mhz
  UBR11 = 0x04;                          
  UMCTL1 = 0x4A;                        // Modulation
  UCTL1 &= ~SWRST;                      // Initialize USART state machine
 }

void main(void)
{
  ....

  init_spi0();                            // Init SPI0
  init_uart1();
  ....

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

Autor: Matthias H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>P3SEL = 0xC0;

sollte besser

P3SEL |= 0xC0;

sein

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Matthias H.

vielen Dank für die schnelle Antwort es funktioniert:)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.