Forum: Mikrocontroller und Digitale Elektronik Variablenname erhöhen


von beginner (Gast)


Lesenswert?

Hallo ich habe folgendes Problem.

Ich möchte einer Hand voll(große Hand) Variablen vom Datentyp uint8 
Werte zuweisen. Die, ich nenn sie mal, Startwerte befinden sich im ROM.

ich bin wie folgt vorgegangen (die ganzen Deklarationen lass ich mal 
außen vor)

uint8 i;

for(i=erste_konstante; i<letze_konstante, i++)
{
     variable[i] = romvariable[i];
}

Der punkt wo es hakt leigt bei "romvariable&i"

also in Worten ausgedrückt ich möchte Variable1 die Romvariable1 
zuweisen. Dies natürlich gerne über die For-Schleife damit ich nicht für 
alle

Variable1 = Romvariable1;
Variable2 = Romvariable2;
Variable3 = Romvariable3;
Variable4 = Romvariable4;

händisch machen muss.

Hat jemand eine Idee ich komme gerade nicht weiter.

mfg

von Dennis (Gast)


Lesenswert?

beginner schrieb:
> Der punkt wo es hakt leigt bei "romvariable&i"

Ja aber die Adresse von deinem Zählindex interessiert doch auch keinen.

von H.Joachim S. (crazyhorse)


Lesenswert?

Hm, entweder verstehe ich deine Frage falsch oder du hast ein 
grundlegendes C-Problem.
Genau dafür gibts doch die Arrays (hast du ja in der Schleife auch 
benutzt)...

unsigned int Variable[10];
const unsigned int Romvariable[10]={....};

von beginner (Gast)


Lesenswert?

Entschuldigung habe mich  verschrieben ich meine romvariable[i]

von Simon H. (simi)


Lesenswert?

Du hast das Problem schon selber gelöst. Du brauchst romvariable1, 
romvariable2, romvariable3 .... gar nicht.

Denn Du hast ja eben romvariable[1], romvariable[2], romvariable[3] ....


Genau dazu sind Arrays da.

von teto (Gast)


Lesenswert?

beginner schrieb:
> Der punkt wo es hakt leigt bei "romvariable&i"
Den Punkt sehe ich nirgends in deinem nichts-sagenden 
Quellcode-Mini-Schnippsel.
EDIT: Hat sich erledigt.

Und was hakt da?
Wie sieht es mit Fehlermeldungen aus?
Bist du auf einem µC?
Werden die Werte auch wirklich aus dem (EEP)ROM ausgelesen?

Die Fehlerbeschreibung und die Randbedingungen sind ziemlich dürftig.

von Simon H. (simi)


Lesenswert?

beginner schrieb:
> also in Worten ausgedrückt ich möchte Variable1 die Romvariable1
> zuweisen. Dies natürlich gerne über die For-Schleife damit ich nicht für
> alle
>
> Variable1 = Romvariable1;
> Variable2 = Romvariable2;
> Variable3 = Romvariable3;
> Variable4 = Romvariable4;
>
> händisch machen muss.

hänge in obige Aussage überall um die Zahlen ein [ ], und Du hast das 
Resultat vom Code, den Du geschrieben hast. Und Dein Problem gelöst.

von Klaus (Gast)


Lesenswert?

Um zu versuchen den Grund für die Verwirrung hier mal ein bisschen 
direkter auf den Punkt zu bringen:

Du schreibst:

>...über die For-Schleife ...

und hast auch den Code dafür hier:
1
for(i=erste_konstante; i<letze_konstante, i++)
2
{
3
     variable[i] = romvariable[i];
4
}

D.h. Du hast genau den Code für den Zweck, nach dem Du hier fragst, 
schon vorliegen. Was ist also das Problem?

von Fnord (Gast)


Lesenswert?

Klaus schrieb:
> Um zu versuchen den Grund für die Verwirrung hier mal ein bisschen
> direkter auf den Punkt zu bringen:
>
> Du schreibst:
>
>>...über die For-Schleife ...
>
> und hast auch den Code dafür hier:
> for(i=erste_konstante; i<letze_konstante, i++)
> {
>      variable[i] = romvariable[i];
> }
>
> D.h. Du hast genau den Code für den Zweck, nach dem Du hier fragst,
> schon vorliegen. Was ist also das Problem?


Da hat sich ein kleiner Fehler eingeschlichen: vor "i++" gehört ein ";" 
und kein ",".

Gruß


Fnord

von beginner (Gast)


Lesenswert?

LÄUFT!

Ich danke euch allen.

mfg

von Thomas E. (thomase)


Lesenswert?

Klaus schrieb:
> variable[i] = romvariable[i];

"romvariable" ist natürlich keine Variable, sondern, da sie im ROM steht 
eine Konstante. Diesen konstanten Wert kannst du den Variablen aber auch 
zum Zeitpunkt der Compilierung zuweisen:

unsigned char variable[] = {8, 27, 43, 1, 222};

und gut ist.

Das Anlegen eines Arrays im ROM (Flash) ist in diesem Fall nur unnötiger 
Ballast, genauso wie das Umkopieren zur Laufzeit an irgendeiner Stelle 
des Programms. Und unübersichtlicher ist es auch.

mfg.

von H.Joachim S. (crazyhorse)


Lesenswert?

Nicht unbedingt. Die Konstanten stehen so oder so im ROM, und es kann 
durchaus weniger Code verbrauchen, wenn sie dort explizit als Feld 
deklariert sind.
Wie es im einzelnen ausgeht, kommt auch noch auf den Compiler und dessen 
Einstellungen an.
Völlig hinfällig wird dein Vorschlag, wenn zur Programmlaufzeit die 
Startwerte teilweise nochmals geladen werden müssen.

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.