www.mikrocontroller.net

Forum: Compiler & IDEs UART lesen mit MSP430


Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich möchte vom PC 35 Bytes auf den Controller übertragen. Diese sollen 
dort empfangen und gespeichert werden, um damit weiterarbeiten zu 
können.
Derzeit lese ich sie in einer Schleife ein:

for(uint8 i = 1;i<35;i++)
    {
        rx_buffer[i] = UCA0RXBUF;
    }

In rx_buffer stehen die Werte nun aber nicht nur einmal drin, sondern 
mehrmals nacheinander. z.B.

rx_buffer[1]=0x01;
rx_buffer[2]=0x01;
rx_buffer[3]=0x01;
rx_buffer[4]=0x4F;
...

Kann mir jemand sagen worand das liegen könnte?

Grüße

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du musst vor dem Auslesen des Buffers warten, bis überhaupt ein neues 
Byte vom PC reingeschrieben wurde. Auf der anderen Seite musst Du das 
Byte auch rechtzeitig genug auslesen, bevor ein neues angekommen ist, 
sonst wurde das alte überschrieben!
So was macht man sinnvollerweise nicht in einer Schleife, sondern per 
Interrupt. Schau Dir mal die Beispiele von TI zu Deinem MSP an und lerne 
;-)

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du musst das Bit UCRXIFG im Register UCA0IFG auswerten, erst wenn es 
gesetzt ist, stehen in UCA0RXBUF neue Daten zum Lesen an.
for(uint8 i = 1;i<35;i++)
    {
        while (!(UCA0IFG & UCRXIFG));

        rx_buffer[i] = UCA0RXBUF;
    }

Der Hinweis von Stefan auf interruptgesteuerten Empfang allerdings ist 
sehr sinnvoll, auch solltest Du Dir Gedanken um so Dinge wie 
Protokolle machen.

Im übrigen sieht Deine for-Schleife verdächtig aus; warum fängst Du bei 
1 an?

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.