www.mikrocontroller.net

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


Autor: Growfreak (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Olibert E. (olibert)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Floh (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?
:-)

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Floh (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.
:-)

Autor: Olibert E. (olibert)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.