Arrays ... ?!

Gast #181161
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
Gast #181162
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.
Gast #181163
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
Angehängte Dateien:
Gast #181164
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

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.