Unterschiedliches Verhalten von Funktion, das sich eigentlich nicht ändern dürfte

OP #1441612
Lesenswert?

Hallihallo!
Ich bin mal wieder am Verzweifeln... nachdem ich meinen gesamten Code 
nun "gereinigt" habe und das Programm bis zu einem gewissen Punkt 
funktioniert hat, stehe ich wieder mal vor einem Rätsel:
Schaut euch mal diesen Codeausschnitt an:
1
while(1){      
2
                  
3
  var0 = OWFindAll();
4

5
  while(PINSB==0xC0)OUTC=PINSB;
6
}
Erläuterung:
OWFindAll() sucht nach angeschlossenen Bauteilen und liefert die 
gefundene Anzahl zurück.
PINSB ist bei meinem µC (AN2131) auf meiner Platine standardmäßig auf 
0xC0, wenn man einen Taster auf der Platine drückt, ändert sich dieser 
Wert.
FoundROM ist ein ganz normales zweidimensionales Array vom Typ char

Das das Programm müsste ja bei der while-Schleife anhalten (also auf 
einen Tastendruck "warten"). Das tut es hier auch.
Nun mein Problem (dazu folgender Code-Ausschnitt):
1
while(1){      
2
                  
3
  var0 = OWFindAll();
4

5
  while(PINSB==0xC0)OUTC=PINSB;
6

7
    var1=FoundROM[0][0];
8
    var2=FoundROM[0][1];
9
    var3=FoundROM[0][2];
10
    var4=FoundROM[0][3];
11
    var5=FoundROM[0][4];
12
    var6=FoundROM[0][5];
13
}

Hier müsste das Programm ebenfalls anhalten, um nach Tastendruck die 
Wertet des Array in var... zu kopieren. Doch ich musste feststellen, 
dass das Programm nicht wartet, sondern immer wieder von vorne startet 
(und somit die Schleife anscheinend nie erreicht...
Wie kann ein Array solche Auswirkungen haben?!?!
Für alle, denen der Ausschnitt nicht reicht, im Anhang ist der komplette 
Code... (sorry, 2 mal der gleiche...)

Viele Grüße,
Stefan
Angehängte Dateien:
OP #1441909
Lesenswert?

Die Programmzeile

if (rslt) rslt = OWVerify();

soll nur verifizieren, dass ein Bauteil mit dem erkannten Romcode auch 
wirklich vorhanden ist (dazu wird das gleiche Bauteil einfach nochmals 
gesucht, bei Erfolg wird 1, bei Misserfolg wird 0 zurückgegeben).

Die Variablen var0 bis var7 habe ich nun mal zu lokalen Variablen 
gemacht, aber das Programm stürzt an der Stelle, an der das Array in die 
var1 bis var6 kopiert wird, immer noch ab (und startet danach neu).
Das ist sehr mysteriös...

Viele Grüße,
Stefan
OP #1441928
Lesenswert?

Also ich habe nochmals ausprobiert:
Dieser Codeausschnitt läuft:
1
while(1){      
2
                  
3
  var0 = OWFindAll();
4

5
  while(PINSB==0xC0)OUTC=PINSB;
6
    var0=FoundROM[0][0];
7
    var1=FoundROM[0][0];
8
    var2=FoundROM[0][1];
9
    var3=FoundROM[0][2];
10
    var4=FoundROM[0][3];
11
}

Und dieser Codeausschnitt läuft nicht:
1
while(1){      
2
                  
3
  var0 = OWFindAll();
4

5
  while(PINSB==0xC0)OUTC=PINSB;
6
    var0=FoundROM[0][0];
7
    var1=FoundROM[0][0];
8
    var2=FoundROM[0][1];
9
    var3=FoundROM[0][2];
10
    var4=FoundROM[0][3];
11
    var5=FoundROM[0][4];
12
    var6=FoundROM[0][5];
13
}

Obwohl nur zwei var... mehr beschrieben werden... Hilfe

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren