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
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
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...).
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
Danke hab es hinbekommen. Muss es natürlich mit ner SFR machen !
@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!
@Patrick: Hatten wir doch vor ein paar Tagen drüber geredet: http://www.mikrocontroller.net/forum/read-1-416386.html Alles schon wieder vergessen???
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.