Forum: Mikrocontroller und Digitale Elektronik MSP430F449: UART0 funzt nicht!!!


von Rooney (Gast)


Lesenswert?

Ich hab das Eval Board MSP-TS430PZ100 von Texas Instruments und hab 
gerade mal angefangen mich mit dem Teil vertraut zu machen. Ich hab zwar 
Kenntnisse in 80C167 und PIC Programmierung und darf ruhig behaupten, 
dass ich nicht schlecht darin bin, aber der MSP will einfach nicht. Ich 
hab einen 32768Hz Uhrenquarz aufs Evalboard gelötet, ohne Kondensatoren, 
aber die kann man ja intern konfigurieren. Ich hab einen RS232 Adapter 
mit ST3232CN der die Verbindung zwischen PC und MSP herstellt. Spannung 
ist auf 3V eingestellt und sämtliche Massen miteinander verbunden. Mit 
HyperTerminal empfange ich sogar etwas aber leider das falsche :-( Kann 
mir zufällig werd den Code, C-Code, rüberschicken, aber ich weiß nicht 
was das ist und habe keine Zeit mich länger damit zu beschäftigen, weil 
es ist Teil einer Projektarbeit für die Schule und mich stresst eh schon 
alles. Entweder ist die Hardware kaputt oder ich bin zu dämlich dafür 
;-)
Also die UART0 soll verwendet werden mit 9600 BAUD, Interrupts 
interessieren mich jetzt mal nicht, weil ich verwende zur Zeit eine 
while(1) und ein Delay, damit immer der gleiche Char rausgeschrieben 
wird und keine Konflikt entsteht.
Hat zufällig wer einen C-Compiler für den MSP430F449, aber mit Windows 
Oberfläche?

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Wenn ich mich nicht irre ist standardmäßig der interne Oszillator 
aktiviert; ändern kann man das zur Laufzeit in irgendwelchen Registern.

Einen kostenlosen, uneingeschränkten Compiler mit Windows-Oberfläche 
gibt es nicht.

von Joerg Huebler (Gast)


Lesenswert?

Hallo,

zuerst im 449 die FLL initial.:

InitFll(TRUE,108,1); Damit läuft dann SMCLK mit 7.1434 MHz

Dann Uart initial.:

/*******************************************************
Initialisieren der USART0

Eingestellt wird UART-Mode
********************************************************/
USHORT InitUARTPhysical(USHORT teiler)
{
  P2SEL |= 0x30;  // Alternativfunktionen (TxD RxD)

  // USART Controlregister U0CTL

  U0CTL =  CHAR;  // Reset USART und 8Bit pro Zeichen

  // Transmitcontrolregister U0TCTL

  U0TCTL = SSEL0 | SSEL1;  // Taktquelle auf SMCLK setzen

  // Receivercontrolregister

  U0RCTL = 0x00;

  // Baudratenregister

  U0BR0 = teiler & 0xff;
  U0BR1 = (teiler >> 8) & 0xff;

  // Moduleenableregister1

  ME1 |= (UTXE0 + URXE0);    // Enable USART0 TXD/RXD
  IE1 |= URXIE0;     // Enable USART0 RX interrupt

  U0CTL &= ~SWRST;

  return(0);    // Kein Fehler
}


unsigned short InitFll(BOOL dcoplus, UCHAR n, UCHAR d)
{
  if(dcoplus == TRUE)
    FLL_CTL0 = XCAP0PF | DCOPLUS;
  else
    FLL_CTL0 = XCAP0PF;

  SCFQCTL = (n & 0x7f);  // Multiplikationsfaktor setzen
  SCFI0 = ((d & 3) << 6) | FN_3;
  return(0);
}

jetzt nocht die Defs. :

typedef enum {FALSE,TRUE} BOOL;
typedef unsigned char UCHAR;

#define FRQ_MCLK  7143424  // Frequenz des Mastertaktes

#define BAUDRATE   9600
#define BRTEILER  FRQ_MCLK/BAUDRATE



Es muessen natuerlich die Interruptroutinen vorhanden sein,
damit man was empfangen oder senden kann.
Hier ist nur der Empfangsinterrupt freigegeben. der Sendeinterrupt wird 
bei Bedarf benutzt.
Die 7.xxx Mhz habe ich gewaehlt, da bei dieser Frequenz die
Leistungsfaehigkeit des MSP bei mit (Vcc=3.3V) voll ausgenutzt
wird und der Fehler der tatsächlichen Baudratenfrequnz verglichen mit 
der Sollfrequenz klein ist.

MfG

von Rolf Freitag (Gast)


Lesenswert?

Am besten fängst Du mit den Beispielen von Ti an, um erstmal zu testen 
ob die serielle Schnittstelle richtig angesprochen wird, denn die hat ja 
selbst bei einer Geschwindigkeit noch dutzende Modi.

Von IAR gibt es eine kostenlose Version bis 4 kB Code und von anderen 
ähnliches, was meist Laufzeitbeschränkt ist. Es gibt aber den 
kostenlosen MSPGCC. Ich benutze den unter Linux mit der bash, aber auch 
für Win gibt's dazu kostenlose Oberflächen.

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.