MSP430 UART kommunikation klappt nicht

Gast #89719
Lesenswert?
• ▲
▼
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 #89720
Lesenswert?
• ▲
▼
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 #89721
Lesenswert?
• ▲
▼
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 #89722
Lesenswert?
• ▲
▼
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 #89723
Lesenswert?
• ▲
▼
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

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.

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.