www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Bitte um kurze Hilfe beim UART: Array-Problem [uart_snd_buffer++]


Autor: Fritz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Morgen, ich bräuchte mal kurz eine kurze Hilfe:

Ich möchte einen char-Puffer interruptgesteuert versenden...

Code-Ausschnitt:
char uart_snd_buffer[100];
uint8_t snd_counter = 0;

void send_uart_character (char *send_buffer)
{
  UCA0TXBUF = *send_buffer;
}

#pragma vector = USCIAB0TX_VECTOR
__interrupt void usciab0_tx_vector (void)
{
  if (IFG2 & UCA0TXIFG) // USCIA0 transmit buffer interrupt
  {
    if (snd_counter)
    {
      UCA0TXBUF = uart_snd_buffer++;
      snd_counter--;
    }
    else
    {
        IFG2 &= ~UCA0TXIFG;                 // Clear UCA0 transmit flag
    }
  }
}

Meckern tut der Compiler beim...
UCA0TXBUF = uart_snd_buffer++;
...und sagt mir: "expression must be a modifiable value"

Das Array ist doch eigentlich nichts anderes als ein String, oder?

Und bei nem String kann ich ja auch schreiben: *string++


Kann mir einer sagen, worans liegt?

Autor: Fritz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aufrufen tue ich es mit:
send_uart_character (uart_snd_buffer);

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein Feld ist nicht (wie oft behauptet wird) gleich einem Zeiger,
sondern nur in vielen Punkten sehr ähnlich.
Insbesondere ist es am ehesten mit einem konstanten Zeiger
vergleichbar, man kann ihn nicht ändern.
  char    arr[100];
  char   *p = arr; // kompatibel genug zum Zuweisen
  p++;    // ok, p kann geändert werden
  arr++;  // geht nicht, weil arr konstant ist (nicht der Inhalt von arr)

Autor: Fritz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alles klar, jetzt klappts! Vielen Dank!

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.