Forum: Compiler & IDEs Arrays ... ?!


von Stefan Sczekalla (Gast)


Lesenswert?

Hi,

ich hab das Problem, das sich ein banales:

volatile int Parameter[5]={0,1,2,3,4};

Array verhält als wenn es "schreibgeschütz" wäre.

es fällt mir schwer das besser zu beschreiben.

ich hab das Array wie oben deklariert. und sehe mittels LCD das hinter
jedem Parameter[i] für i = {0..5} auch der wert steht.

ich kann innerhalb einer funktion auch einen wert verändern z.b. mit

Parameter[n]++;

doch sobald ich z.B auf Parameter[n+1] aus dem array zugreife scheint
der wert den ich vorher verändert habe komplett "vergessen" zu sein.

und lese beim nächsten zugriff auf das array wieder den Wert mit dem
ich das array initialisiert habe ...

Hilfe !!!

Grüße, ein komplett ratloser Stefan

PS: ich kann auch nochmal den kompletten source anhängen wenn sich das
mal jemand ansehen möchte

von Chris (Gast)


Lesenswert?

> PS: ich kann auch nochmal den kompletten source anhängen wenn
> sich das mal jemand ansehen möchte
Ja, etwas mehr Code wäre schon hilfreich.

Du musst aber bitte nicht alles anhängen, sondern wenn möglich ein
Minimalbeispiel, bei dem das beschriebene Verhalten auftritt. Alles
Unnötige weglassen, es sollte aber noch compilierbar sein.

von Stefan Sczekalla (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Chris,

ich hab versucht das ganze etwas einzudampfen...

in der angehängten version hab ich die initialisierung des Arrays
"Parameter" weggelassen. Der Effekt ist aber gleiche wie bereits
beschrieben.

In der Angehängten Datei sieht der Programmablauf ungefär so aus:

Timer 2 sorgt für einen "Systemtakt".

in Main wird Port A gepollt, und entprellt. sobald eine "entprellte"
Taste in "Key" vorliegt, wird KeyState auf den Wert "ProcessKey"
gesetzt. Menustate zeigt auf den aktuell zu "managende"
Menueeintrag.

Mit

   array[MenuState](Key,MenuState);

wird dann eine Funktion ( siehe deklaration array[]={...} )
quasi in abhängikeit des Menüindexes "MenuState" gecalled.

innerhalb der aufgerufenen funktion Z.B. "ServoL" wird dann
ProcessKeys aufgerufen.

Von ProcessKeys erwarte ich, das sich - sobald die Bitkombi "PLUS"
oder "Minus" gedrückt wird, im (imho global deffinierten ) array
"Parameter" die werte veränderen.

das passiert auch, nur - sobald ich mit der "Menu" Taste den nächsten
 MenuState auswähle - solange bis ich wieder im selben "Menü" bin
steht wieder "0" bzw. der initialisierte Wert in
Parameter[MenuState]

ich hoffe Du kommst mit dem Spagetti-Code klar.

Grüße,

Stefan

von Stefan Sczekalla (Gast)


Lesenswert?

Hallo Criss,

ich habs ...

Deppenfehler ... beim aufruf von der in array gespeicherten funktionen
an einen index gesprungen den es nicht gibt.

d.h. das Programm hat immer wieder bei init(); angefangen ...

hggggrrrrr....

Grüße,

Stefan

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.