MSP430 UART kommunikation klappt nicht

Gast #89719
Hallo auch,
ich suche seit etwa 2 Tagen diesen Fehler:
Wenn ich mit einen MSP430F169 über die Serielle Schnittstelle ein
einzelnes Zeichen senden will, dann wird ständig das selbe Zeichen
gesendet.
Die Widerholfrequenz des Zeichens ist jedoch sonderbar lang. Bei 9600
Baud werden gerade mal so 10 bis 20 Zeichen pro Sekunde übertragen.
Bei anderen Baudraten ändert sich da nichts.
Ich habe im Anhang ein kleines C-Programm geschrieben, das diesen
Fehler sehr schön herausarbeitet.
Zum Programmieren benutze ich die IAR Embedded Workbench IDE.
Die verwendete Hardware ist von SoftBaugh das Dlr169 Demo Kit, Die
kommunikation sehe ich mir mit Hyperterminal von Windows an.
Hat jemand eine Idee, an was das legen könnte?
Besten Dank für eure Hilfe.
Angehängte Dateien:
Gast
Hallo Josef,
den MSP430 verwende ich zwar nicht, aber mir ist aufgefallen,
daß in Deinem Programm auf den ersten Blick keine Wiederhol-
schleife zu erkennen ist. Jetzt mal ein Schuß ins Blaue:
Bedeutet "SWRST" vielleicht Softwarereset, so daß nach jedem
Senden resettet wird? Andere Sache: Bei den mir bekannten
µCs fragt man erst, ob das Transmit-Register leer ist, bevor
man hineinschreibt.
Good Luck
Thomas
Gast
Ich blicke bei deinem Programm auch nicht so ganz durch ... Was hast du
für komische Registernamen? Bei mir heisst der erste TX-Buffer TX1BUF,
und nicht U1TXBUF. Und ich benutze auch den IAR-Workbench. Was auf
jeden Fall fehlt -- da hat Thomas recht -- ist die Schleife. Du
arbeitest ja ohne Interrupts, daher kann auch zwangsläufig nicht mehr
als ein Zeichen übertragen werden. Ferner fehlt das Warten, ob der
TX-Buffer schon leer ist. Auch das erwähnte Thomas ja schon. Ich habe
auf www.mathar.com ein paar (kommentierte) Beispiele erstellt, die eine
Kommunikation über den UART realisieren. Lies sie dir einfach mal
durch, dann sollte alles klar werden.

Grüße, Sebastian
Gast
Hab den Fehler jetzt selbst gefunden.
Es liegt einfach daran, das ich vergessen habe, den Watchdog auf dem
MSP zu deaktivieren. Der MSP hat sich dann von selbst zurückgesetzt und
hat das Zeichen neu übertragen.

Übrigens ist ganz am Ende die Programmzeile:

    for(;;);

das ist eine Endlosschleife.

Besten Dank für Eure Beiträge
Gast
Klar ist das 'ne Endlosschleife, aber die bringt dir genau garnix, weil
du ja die Interrupt-Bits fürs USART nicht gesetzt hast. Und der
IR-Handler fehlt ja auch komplett, zumindest in dem von dir geposteten
Codestück.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 22 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.