mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik UART.C


Autor: Torsten Frers (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Timo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Torsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ?

Autor: Ppp Mmm (sanic)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Torsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

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.