Forum: Mikrocontroller und Digitale Elektronik MSP430 UART kommunikation klappt nicht


von Josef Voglhuber (Gast)


Angehängte Dateien:

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.

von Thomas V. (Gast)


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

von Sebastian (Gast)


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

von Josef (Gast)


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

von Sebastian (Gast)


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.

von Josef Voglhuber (Gast)


Lesenswert?

War ja nur ein Demoprogramm mit dem ein einzelnes Byte versant werden
sollte

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.