Forum: Mikrocontroller und Digitale Elektronik hauptschleife läuft garnich?


von Growfreak (Gast)


Lesenswert?

hallo!

hab avr-studio mit nem attiny26. in dem prog steht nur:

#include <avr/io.h>

int main (void) {

   while(1) {
     /* "leere" Schleife*/
   }


   return 0;
}

wenn ich kompiliere, und im avrstudio laufen lass, geht er nicht in die 
while. egal was ich mache. sehr komisch und nach stunden des suchens 
auch nervend mittlerweile. egal was ich mache. er geht nicht in die 
while. andere progs von mir tun das immer und auch im forum ist sowas 
wohl noch net aufgetreten. kann ja auch ne kleine einstellung sein, nur 
ich finde sie nicht. wenn ich anweißungen davor setz läuft es sie ab. 
bis eben zur while???

bitte helft mir schnell...ich muss doch weiter kommen.

vielen dank den helfern..."schlaue" ratschäge können weggelassen werden!

von B. M. (Gast)


Lesenswert?

Ich nehme an, dass der Compiler die leere Schleife wegoptimiert. 
Versuche die Schleife mit etwas sinnvollen zu fuellen oder mit 
entsprechenden Compiler-Optionen die Optimierung abzuschalten.

von Floh (Gast)


Lesenswert?

Growfreak schrieb:
> auch nervend mittlerweile. egal was ich mache. er geht nicht in die
> while.

Was soll er auch in der while(1) tun? :-)
Was passiert, wenn du mal irgendeinen Befehl in die Schleife baust?
:-)

von Karl H. (kbuchegg)


Lesenswert?

Das ist eine Sache des Simulators.
Wenn du an der Position while(1) einen F10 (Singel Step) machst, kommst 
du sofort wieder zum while. Warum? Weil in der Schleife nichts ist, was 
man ansteppen könnte.

von Floh (Gast)


Lesenswert?

Olibert E. schrieb:
> Ich nehme an, dass der Compiler die leere Schleife wegoptimiert.

Naja darf er nicht. Was willst du an einer Endlosschleife wegoptimieren, 
ohne den Programmablauf zu ändern?

Die Frage ist ja, was du meinst von wegen der Simulator geht nie IN die 
Schleife. Wenn der Simulationspfeil die ganze Zeit auf while(1) zeigt, 
dann ist das richtig, da für ihn Leerzeilen nicht existent sind.
:-)

von B. M. (Gast)


Lesenswert?

Floh schrieb:
> Naja darf er nicht. Was willst du an einer Endlosschleife wegoptimieren,
> ohne den Programmablauf zu ändern?

Da hast du recht. Ich hatte uebersehen, dass while(0) auch mit leerer 
Schleife eine Programmfunktion darstellt.

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.