Forum: Mikrocontroller und Digitale Elektronik Variable wird mit falschem Wert geladen


von Marcel K. (viewer)


Lesenswert?

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(",)
von Karl H. (kbuchegg)


Lesenswert?

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
Noch kein Account? Hier anmelden.