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


von Patrick Hahn (Gast)


Angehängte Dateien:

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

von Patrick Hahn (Gast)


Angehängte Dateien:

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

von inoffizieller WM-Rahul (Gast)


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...).

von Magnus Müller (Gast)


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

von Patrick Hahn (Gast)


Lesenswert?

Danke hab es hinbekommen. Muss es natürlich mit ner SFR machen !

von johnny.m (Gast)


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!

von johnny.m (Gast)


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???

von Daniel E. (Gast)


Angehängte Dateien:

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

von Daniel E. (Gast)


Lesenswert?

Hat keiner von euch eine Idee??

von Daniel E. (Gast)


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

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.