Forum: Mikrocontroller und Digitale Elektronik UART.C


von Torsten Frers (Gast)


Lesenswert?

Hallo alle zusammen,
als erstes möcht ich schreiben, dass ich noch blutiger Anfänger bin und
mich in die Materie erst reinarbeite. Macht mir aber ne Menge Spass ;)
Zu meinem Problem: Ich will einen Kartenleser für eine normale
Chipkarte (Krankenkassenkarte) bauen und benutze einen MSP430F413
dafür. Ich programmiere in C. Die UART stellt mich vor einige Probleme.
Habe also erstmal versucht mit einer einfachen "Hallo Welt"
Programmierung über die serielle Schnittstelle etwas auf dem Schirm zu
sehen. Laut Datenblatt kann ich dazu die Register UxRXBUFx und UxTXBUFx
als Buffer zur Ausgabe benutzen (oder doch falsch verstanden?). Diese
Register erkennt aber mein Compiler nicht an und gibt mir Fehler aus,
weil er diese nicht kennt. Wie muß ich die vorher definieren? Oder ist
meine <msp430x41x.h> einfach nur fehlerhaft oder nicht vollständig?
Dachte nämlich, dass ein Register nicht def. wird und einfach anwählbar
ist. Bei anderen Beispielen hab ich die Bezeichnung UDR als Register
gefunden, hat mir aber auch nicht weitergeholfen. Freu mich auf eure
Antworten. Danke

von Timo (Gast)


Lesenswert?

Die genaue Registerbezeichnung lautet:

U0RXBUF = UART 0 Empfangsregister (RX)
U0TXBUF = UART 0 Senderegister    (TX)

U1RXBUF = UART 1 Empfangsregister
U1TXBUF = UART 1 Senderegister

usw.

Also im RX Register steht das empfangene Byte und mit dem TX Register
kannst du Bytes senden.

Von TI gibt es aber eine sehr gute Application Note zu dem Thema. Schau
dir die mal an, dann sollte das meiste klar sein.

von Torsten (Gast)


Lesenswert?

Hi,
erst mal ein dickes Danke für die schnelle Antwort. Die
Registerbezeichnung hatte ich so in der Richtung schon verstanden, aber
wenn ich das Register so eingebe U0TXBUF = answer1 [i++] ( als Beispiel)
sagt der Compiler mir 'U0TXBUF' wäre undeklariert. Ich habe mich an
den Beispiele unter ti und unter www.mathar.com orientiert. Bei mathar
gibt es eine sehr gute Erläuterung für ein solches Eingabe a,b,c
Programm. Nur benutzen die auch dieses Register und bei mir erscheint
die Fehlermeldung. Vielleicht noch ein Idee was ich falsch mache ?

von Ppp M. (sanic)


Lesenswert?

Hallo Torsten,

schau doch einfach mal in dem Header File für deinen Controller ob die
Buffer dort unter einem anderen (ähnlichen) Namen vorkommen.
Oft gibt es dort Unterschiede.

Grüße,
Patrick

von Torsten (Gast)


Lesenswert?

Hallo nochmal,
so hab den Fehler gefunden. Hab dann mal wirklich in der Headerdatei
geschaut. Die msp430/usart.h war zwar vorhanden aber nicht in der
Controller Head Datei eingefügt. Vielen Dank an alle die mitgedacht
haben ;) freu freu

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.