mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Fehlermeldung: expression must be a modifiable lvalue


Autor: Patrick Hahn (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Experten,

ich benutzen eine MSP430F2131 und möchte einen Register einen Wert zu
weisen, doch der Compiler gibt ein Error raus.

"Error[Pe137]: expression must be a modifiable lvalue"

Was mache ich Falsch ?
Als Anhang ist mein C code.

Danke im Vorraus

Patrick

Autor: Patrick Hahn (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Zum besseren Verständnis.

Ich hab oben meine Register definiert.
#define USICTL0 0x78

unten möchte ich den definierten Register einen Wert zuweisen z.B.
USICTL0=0xEE;
Doch da bleibt der Compiler hängen und gibt mir die Fehlermeldung raus
die als Anhang dabei ist.

Danke im Vorraus

Patrick

Autor: inoffizieller WM-Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das was du geschrieben hast:
#define USICTL0 0x78
USICTL0=0xEE;

Führt dazu:

0x78 = 0xEE;

USICTL0 soll wohl ein Register sein?
Da wirst du dir entweder eine fertige Inklude-Datei suchen müssen, die
dieses Register unterstützt, oder die Registerprogrammierung von Hand
realisieren (hab keine Ahnung vom MSP...).

Autor: Magnus Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie Rahul schon erwähnt hat...

>> #define USICTL0 0x78

Damit definierst du eine Konstante namens "USICTL0" und belegst sie
mit dem Wert 0x78.

>> USICTL0=0xEE;

Mit dieser Zeile würdest du der Konstanten "USICTL0" (welche ja
schon definiert wurde) den Wert 0xEE zuweisen. Dies geht natürlich
nicht (eine Konstante wird ja nicht umsonst als solche bezeichnet).

Gruß,
Magnetus

Autor: Patrick Hahn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke hab es hinbekommen. Muss es natürlich mit ner SFR machen !

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Magnetus:
Stimmt so nicht ganz (zumindest begrifflich), es ist keine Konstante
sondern ein Makro, dessen Name an jeder Stelle, an der er im Quelltext
auftaucht, mit dem zugewiesenen Text ersetzt wird. Es ist eine reine
Textersetzung, die zur Compiler-Laufzeit durchgeführt wird.

Konstanten werden in C mit

const TYP name = WERT;

definiert. Im Unterschied zu Makros belegen sie Speicherplatz im
Zielsystem!

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Patrick:
Hatten wir doch vor ein paar Tagen drüber geredet:

http://www.mikrocontroller.net/forum/read-1-416386.html

Alles schon wieder vergessen???

Autor: Daniel E. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

ich bin nun auch auf das Problem gestoßen, das in diesem Beitrag 
diskutiert wird. Ich programmiere den NEC V850E/Dx3, compilieren, linken 
und programmieren funktioniert mit der Software FPL von NEC ganz gut, 
nun wollte ich mit der IAR workbench software v3.40A eine Software 
benutzen, mit der nebenbei auch debuggt werden kann.
Ich ordne nur nicht einem Wert einen anderen Wert zu wie oben der Fehler 
war, sondern in meiner Haederdatei df3423 wird z.B. der Registername PM9 
folgendermaßen einem bestimmten Speicherplatz zugewiesen:

Auszug aus Headerdatei df3423,h:

#define  PM9              CAST_UC(0xfffff432)



Ich möchte z.B. dieses Register mit einem Wert beschreiben. Beim FPL hat 
dies so noch funktioniert. Was CAST_UC zu bedeuten hat weiß ich leider 
nicht, ich habe die Headerdatei nicht selbst geschrieben.

Vielen Dank für eure Hilfe, macht weiter so!
Daniel

Autor: Daniel E. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat keiner von euch eine Idee??

Autor: Daniel E. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe den Fehler gefunden, statt den angegeben Headerdateien 
df3423exti0.h und df3423.h muss die Headerdatei io70f3423.h eingefügt 
werden, die sich im IAR-Ordner befindet. Dann funktioniert es auch.

MfG

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.