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.
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?
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)
> 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];
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!!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.