Forum: Mikrocontroller und Digitale Elektronik MSP430 UART RS232


von Martin (Gast)


Lesenswert?

Hallo,

ich arbeit nun schon seit 4 Wochen an einer Moeglichkeit ein Zeichen mit 
meinem Launchpad auf den Hyper Terminal zu schicken. Leider ohne Erfolg.
Vielleicht hat schon jemand von Euch Erfahrung mit RS232 und MSP430 
(Launchpad) und kann mir sagen was ich falsch mache.

Vielen Dank im Voraus

Gruss Martin


Mein Aktueller Code schaut so aus:

#include <msp430g2553.h>

#define TXD BIT1 // TXD on P1.1
#define RXD BIT2 // RXD on P1.2

unsigned char a;


void main( void )
{
   WDTCTL = WDTPW + WDTHOLD;             // Watchdog aus

   BCSCTL1 = CALBC1_1MHZ;
   DCOCTL = CALDCO_1MHZ;

   P1SEL = TXD;                             // TXD
   P1DIR = TXD;                            // TXD als Ausgang

   UCA0CTL1 = UCSWRST;

   UCA0CTL0 &= ~BIT0;                      // Async. mode
   UCA0CTL0 = UCMODE_0;                     // UART mode
   UCA0CTL0 &= ~BIT3;                       // 1 Stopbit
   UCA0CTL0 &= ~BIT4;                       // 8-bit character
   UCA0CTL0 &= ~BIT5;                       // LSB first
   UCA0CTL0 &= ~BIT7;                       // parity disable

   UCA0CTL1 = UCSSEL_2;                    //  SMCLK

   UCA0BR0 = 0x6D;                         // 1Mhz/9600
   UCA0BR1 = 0x00;
   UCA0MCTL= 0x03;

   UCA0CTL1 &= ~UCSWRST;

   IE2 |= UCA0TXIE;

   __bis_SR_register(LPM3_bits + GIE);


   while (!(IFG2 & UCA0TXIFG));   // TX buffer ready?
   {
       UCA0TXBUF = 'a';
   }
}

von AND (Gast)


Lesenswert?

RX und TX sind beim 2553 vertauscht.

von Martin (Gast)


Lesenswert?

Hallo AND,

Du hast recht, ich habe mich stur an die Beschriftung auf dem Launchpad 
gehalten.
PS Code funktioniert aber immernoch nicht.
Kann ich dann überhaupt den USB Anschluß vom Lauchpad benutzen?

Gruß Martin

von AND (Gast)


Lesenswert?

Hallo Martin,

du musst die RX und TX Leitungen beim Launschpad drehen, am besten bei 
den Jumpern:
http://www.43oh.com/2011/10/dongle-swaps-serial-lines-on-the-launchpad/

Dann sollte es gehen.

von Achim M. (minifloat)


Lesenswert?

Martin schrieb:
> Kann ich dann überhaupt den USB Anschluß vom Lauchpad benutzen?

Welches Betriebssystem und welchen Compiler verwendest du?

Irgendwo hier aufm µC.net hab ich auch schon gelesen, dass der 
integrierte USB-Seriell-Adapter des Launchpad "lügt", wenn man 
Geschwindigkeiten größer 9600 Baud auswählt; dann gehen trotzdem nur 
9600 Baud. Stimmt das?

mfg mf

von Martin (Gast)


Lesenswert?

Hallo,

ja es ist richtig, dass nur max. 9600 Bps möglich sind.
Danke AND für den Link, das werde ich einmal probieren.

Gruß Martin

von Martin (Gast)


Lesenswert?

Hallo Mini Float,

hätte ich fast übersehen, ich verwende Windows 7 mit dem CCS 5 von TI.

Servus
Martin

von Achim M. (minifloat)


Lesenswert?

Martin schrieb:
> Windows 7 mit dem CCS 5 von TI

Dann ist ja alles in Butter und der USB-Serial-Adapter sollte 
funktionieren.

Hier am Apfelrechner gabs fürs Launchpad erst nur einen "Nulltreiber", 
der zwar das Teil für mspdebug zu Verfügung stellen konnte, aber den 
USB-Serial-Adapter mit ausgesperrt hat. Wurde inzwischen von ein paar 
findigen Leuten korrigiert. Mich hat das eh nicht gejuckt, da ich ein 
umgebautes altes Handydatenkabel hab, das zudem auch schneller kann :D

mfg mf

von Roland H. (batchman)


Lesenswert?

Martin schrieb:
> IE2 |= UCA0TXIE;

Das aktiviert den "transmit interrupt". Wo ist die ISR? Wozu?

Zum Abfragen von IFG2 & UCA0TXIFG benötigt man das nicht, das Flag wird 
auch so gesetzt. Der Name UCA0TXIFG ist m. E. etwas unglücklich.

Martin schrieb:
> while (!(IFG2 & UCA0TXIFG));   // TX buffer ready?
>    {
>        UCA0TXBUF = 'a';
>    }

Die geschweiften Klammern könnten verwirren :-)

von Roland H. (batchman)


Lesenswert?

Martin schrieb:
> UCA0BR0 = 0x6D;                         // 1Mhz/9600
>    UCA0BR1 = 0x00;
>    UCA0MCTL= 0x03;

9600 mit 1 MHz ist ja nicht so der Bringer,
wenn ich das richtig sehe, verwendest Du den "fractional baud rate 
generator", aber versuchs doch erst mit 4800.

Der msp430g2553 kann 16 MHz, damit erreicht man 115k (mit einem externen 
max3232).

Im neuen Launchpad soll der msp430g2553 übrigens drin sein.

von Martin (Gast)


Lesenswert?

Hallo AND,

nochmals vielen Dank für Deinen Beitrag. Ich habe heute eine Brücke an 
den Jumpern angebracht. Siehe da, alles funktioniert wie es soll.

Über den Rest des Codes habe ich mir noch keine großen Gedanken gemacht, 
weil ich ersteinmal sehen wollte ob es überhaupt funktioniert.
An dieser Stelle auch Danke an alle anderen Beiträge.

Gruß Martin


PS: Kleiner Tip: Bei TI kann man kostenlos Samples von verschiedenen µC 
bestellen. (z.B. MSP430G2553 )

von Martin (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Leute,

da nun das Senden und empfangen soweit funktioniert, hat sich inzwischen 
ein neues Problem ( Herausforderung ) ergeben.

Mein Programm empfängt ein Zeichen, in diesem Fall ein 'u' und löst 
damit eine ISR aus. In der Sende ISR soll der Wert n in Zeichen 
umgewandelt werden um ihn an den HTerm zu versenden. Er sendet aber nur 
eine 9.
Wie lese ich den char int_to_array_str[4] Speicher richtig aus?

Danke im Voraus.

Martin

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.