www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Usart RS232 MSP430


Autor: Rico (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo.

Ich möchte mit dem MSP430f149 eine USART Kommunikation aufbauen. Durch
die
Hilfe von mathar.com will ich ein einfaches Echo erzeugen. Problem:
nichts passiert. Einstellungen sind bei COM Terminal und beim
Hardwaremanager sind identisch. Wo kann mein Fehler noch liegen.

Ich benutze den ACLK der (7,3728 MHz /2).

mfg

Rico


#include  "msp430x14x.h"

unsigned char answer1[] = "Buchstabe ";
unsigned char answer2[] = " gedrueckt\r\n";

char i, j;

void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;             // watchdog aus
  //takt einstellen
  BCSCTL1|=XTS+XT2OFF+DIVA_1;           //initialisierung von ACLK, XTS
aktiviert den externen quarz
  __bic_SR_register(OSCOFF);            //löscht das bit(0) OSCOFF im
statusregister> LFXT1 is on
  do                                    //do-schleife überprueft ob
OFIFG-flag gesetzt ist
  {
    IFG1 &=~OFIFG;                      //löscht OFIFG
    for (i=0xFF;i>0;i--);
  }
  while (IFG1&OFIFG);                   //abbruchbedinung

  BCSCTL2=SELM_3+SELS;                  //SELM_3 soll den LFXTCLK soll
den MCLK generieren

    P2SEL=0x01;                         //schaltet  pin2.0 die
sonderfunktion(ACLK) ein (funktioniert aber nicht)
  P5SEL=0x70;                           //schaltet pin5.4-5-6 (01110000)
die sonderfunktion ein MCLK, SMCLK, ACLK

  P1DIR=0x01;
  P2DIR=0x01;
  P1OUT=0x01;


  P3SEL = 0x30;                         // P3.4 und P3.5 als USART0
TXD/RXD

  ME1 |= UTXE0 + URXE0;                 // TX- und RX-modul erst mal
anschalten
  UCTL0 |= CHAR;                        // 8 data bits, 1 stop bit, no
parity (8N1)
  UTCTL0 |= SSEL0;                      // ACLK als UCLK festlegen
SSEL0 entspricht logisch 01
  UBR00 = 0x60;                         // 19200 baud aus
3,6864MHz(ACLK/2) erzeugen, N=192 ohne rest
  UBR10 = 0x00;
  UMCTL0 = 0x00;                        // korrektur der division
  UCTL0 &= ~SWRST;                      // USART freigeben
  IE1 |= URXIE0 + UTXIE0;               // TX- und RX-interrupts
anschalten
  IFG1 &= ~UTXIFG0;                     // initales interrupt-flag
loeschen

  _BIS_SR(LPM3_bits + GIE);             // ab in den LPM3 mit interrupts
...
}

#pragma vector=UART0TX_VECTOR
__interrupt void usart0_tx (void)
{
  if (i < sizeof answer1-1)             // string schon zu ende?
    TXBUF0 = answer1[i++];              // string ausgeben
  else if (i == sizeof answer1-1)       // wenn erster string zu ende
...
    {
      TXBUF0 = RXBUF0;                  // ... dann den getippten
buchstaben ausgeben
      i++;
    }
  else if (j < sizeof answer2-1)        // wenn auch der ausgegeben ist
...
    TXBUF0 = answer2[j++];              // ... dann den zweiten string
ausgeben
}

#pragma vector=UART0RX_VECTOR
__interrupt void usart0_rx (void)
{
  i = 0;
  j = 0;
  TXBUF0 = answer1[i++];                // ersten buchstaben von answer1
ausgeben
}

Autor: ehde76 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
UBR00 = 0x60;                         // 19200 baud aus
3,6864MHz(ACLK/2) erzeugen, N=192 ohne rest

192 = 0x60???

ab dafür...

Autor: Rico (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mit UBR00 = 0xC0; erreicht man wohl dne korrekten Wert 192

danke

R

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,Ich häge auch an dem Baudraten einstellungen.
Ich hab ein 4,9125MHZ Quarz und will 115200 Baud erzeugen.
laut http://www.msp430.info/modules.php?name=Gadgets&op=uart
müßte Ich
UBR01=0x2A; UBR11=0x00; UMCTL1=0x5B; /* uart1 4915200Hz 115200bps 
(115110bps) */
verwenden.Das klappt aber nicht! Kann mir jemand die richtigen 
Einstellungen geben?
Vielen Dank
Markus

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.