while schleife funktioniert nicht

Gast #756899
Lesenswert?

hallo,

ich habe ein problem mit der while schleife. im hauptprogramm meines 
atmega8 möchte ich mit einer while schleife abwarten bis eine bestimmte 
variabel größer als ein vordefinierter wert ist.  wenn die variabel 
größer als 10 ist soll das hauptprogramm weiterlaufen.
also:

..

while (c < 10) //c wird durch externen interrupt erhöht
{
}

..

wieso funktioniert das so nicht?

wenn ich in den geschwungenen Klammern einen weiteren befehl schreibe 
funktioniert es.

while (c < 10) //c wird durch externen interrupt erhöht
{
  uart_puts("c < 10 \r\n");
}

Karl
Gast #756929
Lesenswert?

Die Optimierungsstufe -O0 kann ich nicht wählen da sonst das programm 
nicht auf den µC passt. Ich werde es einmal mit deiner methode 
versuchen. danke für deine bemühungen. Gibt es im Internet Erklärungen 
zu den einzelnen Optimierungsstufen?
Gast #756958
Lesenswert?

Die einzelnen Optimierungsstufen sind schnell erklärt:

-O0: keine Optimierung
-O1: Optimierung der Registerbelegung, also Umkopieren zwischen 
Registern vermeiden, häufig verwendete Variablen komplett in Registern 
halten
-O2: Optimierung der Programmstruktur auf Funktionsebene (darunter fällt 
auch das Wegoptimieren sinnloser Schleifen)
-Os: Dasselbe wie -O2, bis auf solche Optimierungen, die typischerweise 
die Codegröße erhöhen
-O3: Optimierung der Programmstruktur auf Sourcefileebene (also auch 
Inlining etc.)
Moderator Persönliche Seite #757123
Lesenswert?

Karl wrote:
> ich habe es jetzt in volatile geändert und es funktioniert trozdem
> nicht.Als Optimierungsstufe habe ich -Os gewählt.

Dann musst du Nägel mit Köpfen machen und ein compilierfähiges
Beispiel liefern.  Außerdem solltest du "funktioniert nicht" dann
noch näher erläutern (was erwartest du? was passiert stattdessen?).

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