Einfache "for" Schleife funktioniert nicht

Gast #2073183
Lesenswert?

Hallo,

ich saß gerade an einem kleinen Projekt und wunderte mich, warum mein 
Atmega8 irgendwie nicht das tat, was er meiner Meinung nach tun sollte.

Da ich vor kurzem das Einsteigerset von myAVR erstanden hatte, 
programmierte ich ihn mit der mitgelieferten Software "SiSy".

Da dieses leider keinen Debugger mitliefert, habe ich mal umgeschwenkt 
zum AVR Studio.

Dort habe ich ein ganz einfaches kleines C Programm geschrieben, welches 
interessanterweise nicht funktioniert.

Zuerst dachte ich, meine sämtlichen C Kenntnisse wären eingestaubt..

Eine Überprüfung im Visual Studio (mit exakt dem gleichen Programm) 
erwies sich allerdings als positiv, es funktioniert wunderbar.

Ich weiß mir leider keinen Rat mehr, daher bitte ich hier um Hilfe, 
evtl. hat Jemand solch ein Problem schonmal gehabt?

Um folgenden Code geht es:

#include <avr/io.h>
int main(){
  int i;
  int a;

  while(1){
  for (i=0;i<=5;i++){}

  i=0;

  for (a=0;a<=5;a++){}

  a=0;
  }
}

Das Programm ansich ist antürlich vollkommen Sinnlos, was aber ja nicht 
heißt das es deswegen nicht funktionieren darf.
Ich deklariere mir zwei Variablen (i und a), laufe in eine endlose while 
Schleife und zähle dort in einer for Schleife i bis 5 hoch, komme dann 
aus dieser Schleife heraus und weise i wieder den Wert 0 zu.
Das gleiche mache ich mit "a".

Im Visual Studio funktioniert das ganze tadellos, das Programm bleibt in 
meinen Schleifen, zählt bis 5 , und kommt wieder heraus. So wie es sein 
sollte.

Interessant wird das Ganze allerdings im AVR Studio Debugger.
Hier läuft das Programm in die erste for Schleife, zählt bis 5 , setzt 
auf wundersame weise i SOFORT wieder auf 0 und bleibt in der ersten for 
Schleife kleben...für immer.

Wo ist da bitte der Sinn? Was mache ich falsch?

Gruß
Gast #2073617
Lesenswert?

Funghi schrieb:
> Danke Euch, daran lags :-)
> Was µC-Programmmierung angeht bin ich noch frisch, aber man ist ja da um
> zu lernen ;-)

Hat mit µC nichts zu tun, ist eine C-Compiler-Sache.

Wenn Du im Visual Studio die Optimierung einschaltest oder unter Linux 
z.B. mit "gcc -O2" compilierst wird sehr wahrscheinlich auch nicht 
passieren was Du wolltest.
Beitrag #5320401 wurde von einem Moderator gelöscht.
Beitrag #5320405 wurde von einem Moderator gelöscht.

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