Forum: Compiler & IDEs Problem mit mehrdimensionalem Array


von didi (Gast)


Lesenswert?

Hallo zusammen,

habe da ein Problem beim beschreiben von einem mehrdimensionalem
Array. Ich lade 8 Kanäle von ADC in das Array life_ch[7], was auch 
einwandfrei funktioniert. Wenn ich nun die Werte in ein anderes Array 
übernehme, wo die Daten weiter verarbeitet werden solle, wird immer eins 
der 8 Bytes falsch übernommen.
Es passiert sogar, das ein Byte in einer anderen Dimension zu null wird, 
obwohl In der Routine gar nicht auf diese Dimension zugegriffen wird.
Hier mein Code:
Alle Variablen sind global declariert

unsigned char memnum;    // aktuelle Memory-Nummer
unsigned char life_ch[7];    //ADC-Werte Für leif-Kanal
unsigned char memory[7][6];    //Ausgabewerte für alle Memoryplätze
unsigned char i;

ADC_life();                          //laden der Analogwerte

memnum=(auswahl(0,0,6));    //Auswahl des Speicherplatzes von 1-6
for (i=0; i<8; i++)
{
memory[i][memnum]=(life_ch[i]);
}

nach dieser Schleife ist einer der 8 Werte in Memory[i][memnum] =0.
Es passiert auch, das bei beschreiben des Array’s zB. Memnum=0,
ein Wert in der Dimension memnu=1 zu Null wird.

-ist sicher schwer zu verstehen aber vielleicht kann ja doch einer 
helfen.
-Arbeite mit WinAVR
-Der Prozessor ist ein ATMEGA 664p mit 20 MH


PS. Die Wege der Ströme und Spannungen sind unergründlich.

von P. S. (Gast)


Lesenswert?

didi schrieb:

> habe da ein Problem beim beschreiben von einem mehrdimensionalem
> Array. Ich lade 8 Kanäle von ADC in das Array life_ch[7], was auch

8 Werte in ein Array mit 7 Plaetzen?

von didi (Gast)


Lesenswert?

man zählt doch von 0 bis 7 und das sind doch 8 Plätze?

von TestX .. (xaos)


Lesenswert?

didi schrieb:
> man zählt doch von 0 bis 7 und das sind doch 8 Plätze?

die array größe beginnt aber bei 1 (ein element)

von Peter (Gast)


Lesenswert?

> man zählt doch von 0 bis 7 und das sind doch 8 Plätze?

ja aber du hast nur 7 Plätze platz.
> unsigned char memory[7][6];

von didi (Gast)


Lesenswert?

Vielen Dank,

hatte da einen vollen Aussetzer. Spreche sonst nur Assembler und habe 
jetzt mit C angefangen, weil ich etwas umfangreichere Berechnungen 
bewältigen muß und das macht sich in Assembler nicht so leicht.

nochmals vielen Dank!!

von didi (Gast)


Lesenswert?

Hab's gleich getestet und siehe da,

kaum macht man's richtig - schon funst alles.

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.