Hallo Forumgemeinde, ich programmiere mit WinAVR in der Eclipse-Umgebung. Debuggt wird mit AVR Studio4.0 Ich habe folgend Funktion. void second_try(unsigned char *zeiger, unsigned char length) { unsigned char loc; glob = 0x00; loc = 0x00; while( !(glob == length) ) { send_row_data(zeiger[glob]); glob++; } } Ich weiß dass die lokale Variable unnötig ist aber ich habe das ganze sowohl mit einer globalen als auch mit einer lokalen Variable probiert. Es ist so, wenn ich mit dem Debugger eine Breakpoint direkt vor "glob = 0x00" setzt, dann wird beim nächsten Schritt (F10) der Wert 0x44 und nicht der Wert 0x00 geladen. Wenn ich allerdings schreibe "glob = 0x01" dann wir auch die "1" geladen. Ich kann das ganze nicht glauben aber es ist wirklich so. Ich habe das ganze auch in einem anderen Projekt probiert aber da war das gleiche Problem. Dann habe ich noch folgendes probiert: glob = 0x01; glob -= 1; Dann steht die 0x00 drin. Ich habe das ganze dann auch noch in Studio 5.0 probiert. Da war dann das gleich Problem. Hat irgendjemand eine Idee woher das kommen kann? Viele Grüße, Marcel(",)
Mit dem Schnipsel alleine kann man nicht entscheiden, wie der Optimizer das hingedreht hat, dass du im Debugger die 44 siehst. Ich bin mir aber sehr sicher, dass du einem Phantom nachjagst und dir der Optimizer da einen Streich gespielt hat (oder aber dein eigentliches Problem ganz woanders sitzt und du nur hier die Auswirkungen spürst)
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.