MSP430 UART RS232

Gast #2452388
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';
   }
}
Gast #2453385
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
#2453407
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
#2453672
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
#2453685
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 :-)
#2453689
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.
Gast #2454713
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 )
Gast #2469932
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
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren