mikrocontroller.net

Forum: Compiler & IDEs Problem mit mehrdimensionalem Array


Autor: didi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: P. S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: didi (Gast)
Datum:

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

Autor: Andi ... (xaos)
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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];

Autor: didi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!!

Autor: didi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab's gleich getestet und siehe da,

kaum macht man's richtig - schon funst alles.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.