Forum: Mikrocontroller und Digitale Elektronik MSP430 UART1 sendet nix


von Gino B. (gin)


Lesenswert?

Hallo!

Die MSP Programmierung ist ziemliches Neuland für mich und daher habe
ich auch arge Probleme...
Mein momentanes ziel ist dem MSP430F147 Daten aus dem UTXD1 Port zu
locken. Die Daten gehen dann in einen FT232BM.
Im Moment wird nix gesendet, und wenn ich das richtig verstanden habe,
sollte das ja der Fall sein, sobald man etwas in den TXBUF1 schreibt.
(Benutzte externen quarz 4Mhz)

Hier meine Initialisation:
void init_uart() {
  U1CTL  |= SWRST;                 // USART Software Reset
   UCTL1  |= CHAR;                  // 8-bit character

   URCTL1 = 0;                // reset all possible error flags

   UTCTL1 |= SSEL1;                 // UCLK = SMCLK

   UBR01   = 0xA0;                  // 4Mhz divided by 0x1A0 --> baud
9600
   UBR11   = 0x01;                  //
   UMCTL1  = 0x00;                  // clear Modulation
   ME2    |= UTXE1 + URXE1;         // Enable USART1 TXD/RXD

   UCTL1  &= ~SWRST;                // Initialize USART state machine
}

void init_clock() {
   BCSCTL1 &= XT2OFF;
   BCSCTL1 |= XTS + RSEL1;

   BCSCTL2 |= SELM_2 + SELS;
}


Habe auch Probleme beim empfangen von Daten: Die Daten kommen (sehe ich
mit Oszilloskop) aber der TXBUF1 bleibt mit altem Speichermüll gefüllt.

Ich hoffe so sehr jemand von euch kann mir helfen!!

von thomas.o (Gast)


Lesenswert?

hast du die ausgehenden daten auch auf dem oszi kontrolliert? vor allem
die frequenz bzw. baudrate?


   UBR01   = 0xA0;                  // 4Mhz divided by 0x1A0 --> baud
9600

im kommentar steht "divided by 0x1A0, was auch zu 9600baud fuehren
wuerde, jedoch im code steht 0xA0, was ein teiler von 160 ist, und auf
eine baudrate von 25000 fuehrt

mfg,
thomas

von Gino B. (gin)


Lesenswert?

Der Kommentar ist eine zeile zu früh, danach kommt ja noch:
   UBR11   = 0x01;
und UBR berechnet sich ja aus UBR11 + UBR01 = 0x01 + 0xA0 = 0x1A0
oder seh ich das falsch?

von thomas.o (Gast)


Lesenswert?

ups.. stimmt. hab zu schnell geantwortet.
du hast recht.

die frequenz die du mit dem oszi misst stimmt aber, oder?
wie hast du denn dein clock system konfiguriert?
ist schon wieder laenger her, dass ich mit dem msp gearbeitet hab.

mfg,
thomas

von Yagan Ζ. D. (yagan)


Lesenswert?

Gino,

hast Du die Port-Pins für die USART1 aktiviert?

    P3SEL |= 0xC0;              // P3.6,7 = USART1 TXD/RXD

Ciao, Yagan

von KoF (Gast)


Lesenswert?

und wie ließt du den receiver aus?? pollst du ihn (zyklische abfrage)
oder löst du nen interrupt aus???

von Gino B. (gin)


Lesenswert?

Danke für die vielen Antworten!
Yagan hat die Lösung gefunden...ist mir fast schon peinlich! Ich erzähl
am besten niemandem wie lang ich schon an der Fehlersuche saß...wegen
ner grundlenden Sache...naja..

Danke euch!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.