Forum: Mikrocontroller und Digitale Elektronik MSP430F149 usart empfangenen Zeichenkette verarbeiten


von mic (Gast)


Lesenswert?

Hallo,

ich versuche eine Zeichenkette vom PC über usart mit dem MSP zu 
verarbeiten.
Ein Zeichen zu empfangen ist kein Problem, nur wie verarbeitet man eine 
Zeichenkette wenn der Receivebuffer nur 8Bit empfangen kann.

Kann mir jemand ein Tipp geben wie man z.B eine Zeichenkette in eine 
Variable speichert.

Vielen Dank

Gruß
Mic

von Krapao (Gast)


Lesenswert?

In welcher Programmiersprache?

von Tobi (Gast)


Lesenswert?

mic schrieb:
> Kann mir jemand ein Tipp geben wie man z.B eine Zeichenkette in eine
> Variable speichert.

In C:
1
memcpy(str2, str1, strlen(str1)+1); // str1 in str2 speichern

von mic (Gast)


Lesenswert?

Da habe ich wohl die falsche Frage gestellt.
Es geht um, wie ich mehrere Zeichen über RS232 aus dem Receivebuffer vom 
MSP430F149 in eine Variable bekomme.

Ich sende per Terminalprogramm "hallo", in der Variable receive steht 
dann nur das letzte Zeichen "o"

Es wird immer nur das letzte Zeichen vom Buffer in die Variable 
geschrieben.

Ich schreibe das Programm mit dem CCSV5 in c

#pragma vector=USART0RX_VECTOR
__interrupt void usart0_rx (void)
{

  m = 0;

   while ((URXIFG0)==1){
    receive[m++] = RXBUF0;    // Ankommendes Zeichen speichern

  }

von 16Bit (Gast)


Lesenswert?

#pragma vector=USART0RX_VECTOR
__interrupt void usart0_rx (void)
{

  // m = 0;

   while ((URXIFG0)==1){
    receive[m++] = RXBUF0;    // Ankommendes Zeichen speichern

}

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Der Interrupt wird für jedes empfangene Zeichen einzeln ausgelöst, daher 
ist es kontraproduktiv, den Index in das Array "receive" jedesmal auf 0 
zu setzen.

Außerdem ist das "while" nicht erforderlich, da je Aufruf der 
Interruptroutine nur ein Zeichen empfangen wird.

Desweiteren sollte eine Bereichsüberprüfung für den Index des Arrays 
"receive" erfolgen, wenn hintereinander mehr Zeichen empfangen werden, 
als im Array Platz finden, geht einiges in die Hose.

von mic (Gast)


Lesenswert?

o.k. jetzt erklärt sich einiges, beim ersten Durchlauf des Programms 
klappt es.
JEtzt muss ich nur noch die Bereichsüberprüfung des Arrays 
programmieren.

Vielen Dank noch für die wertvollen Tipps

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.