Hallo, Folgender Bug / folgendes Problem: Im Kopf des Codes definiere ich eine boolean Variable; Dies sollte logischerweise HIGH/LOW, TRUE/FALSE, 1/0 sein. Dies funktioniert soweit gut, wenn ich die Variable gezielt toggle. Bei einer for-Schleife, die absolut nichts mit dieser Variable macht, wird die boolean Variable beim letzten Durchlauf der for-schleife auf 211 gesetzt. Wie kann das sein und wieso?! Theoretisch doch gar nicht möglich? Ich weiss, dass eine boolean Variable 1 Byte beansprucht, nach mir sollte die aber trotzdem nicht so gesetzt werden können... Anyway, hier noch der Code in dem das Mysteriöse geschieht: for(i=0;i<sizeof(sequence2x)/4;i++){ xdiffs2[i] = sequence2x[i+1] - sequence2x[i]; ydiffs2[i] = sequence2y[i] - sequence2y[i+1]; Serial.println(dir); } "dir" ist meine boolean Variable. Die Arrays haben jeweils 11 Werte a 4 Byte (long) Jemand schonmal solche Probleme gehabt?
Thomas schrieb: > Jemand schonmal solche Probleme gehabt? Ja, wenn ein amoklaufender Pointer/Index eines Arrays, das im Speicher davor liegt, Werte überschrieben hat. Zeig doch mal das gesamte Programm...
:
Bearbeitet durch Moderator
Das Problem liegt ausserhalb des gezeigten Codes. Wie sind definiert: xdiffs2, sequence2x, ydiffs2, i Gruß, Stefan
> [..] beim letzten Durchlauf der for-schleife auf 211 gesetzt. Wie kann > das sein und wieso?! Theoretisch doch gar nicht möglich? Du schreibst höchstwahrscheinlich über das Ende von xdiffs2 oder ydiffs2 raus. > Die Arrays haben jeweils 11 Werte a 4 Byte (long) Ich vermute Du beziehst Dich damit auf xdiffs2 und ydiffs2. Was genau ist sequence2x?
g457 schrieb: > Du schreibst höchstwahrscheinlich über das Ende von xdiffs2 oder ydiffs2 > raus. Ayy, da hab ich doch glatt die Grösse von xdiffs2 & ydiffs2 auf "[10]" gehabt, danke, fixed! g457 schrieb: > Was genau > ist sequence2x? [11] Stefan K. schrieb: > Wie sind definiert: > xdiffs2, sequence2x, ydiffs2, i float xdiffs2[11] = {}; float ydiffs2[11] = {}; unsigned long sequence2x[11] = {0,2000000,....meine Werte}; unsigned long i = 0;
Lothar M. schrieb: > Zeig doch mal das gesamte Programm... Nee ich kopier hier keine 2371 Zeilen rein
Bei i = 11 liefert diese Zeile kein definiertes Ergebnis mehr: ydiffs2[i] = sequence2y[i] - sequence2y[i+1]; Gruß, Stefan
Thomas schrieb: > Nee ich kopier hier keine 2371 Zeilen rein Du kannst einfach diese Datei anhängen, wie sie ist...