- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 3 von 3

Thema: While...

  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    56
    Beiträge
    2.208

    While...

    Anzeige

    E-Bike
    Hallöle.
    Ich schon wieder mal.
    Ich sitze jetzt eine Stunde hier fest:

    Code:
    lcd_setCursor(0,1);
    		printf("uebrig:%4d",odoklicks);						//wird ausgeführt, Wert ungleich Null!	
    	while(odoklicks != 0);
    		{
    		
    		led_set(LED_L_RD,0);								// wird bereits nicht ausgeführt
    		led_set(LED_L_YE,0);
    		motpwm_setLeft(speed_l);
    		motpwm_setRight(speed_r);
    		Regelung();
    		}
    Also: bis zum entsprechenden Kommentar läuft das Programm tadellos, es wird ein Wert "odoklicks" ausgegeben, je nach Programmsituation grösser oder kleiner Null.
    odoklicks ist eine ganzzahlige Variable mit Vorzeichen (kann auch negativ sein).
    Praktisch kann ich mit dem Programm Zustände erzeugen, wie odoklicks=0, odoklicks<0(negativ), odoklicks>0.
    Offenbar hängt das Programm sich auf, wenn odoklicks nicht Null ist, wenn ich als odoklicks Null füttere, dann läuft es problemlos weiter, ohne die while-Schleife zu durchlaufen (ist in diesem Fall ja auch richtig).
    Praktisch aber (odoklicks=0 macht keinen Sinn) wird die Variable immer irgendeinen Wert haben.
    Dann jedoch läuft es auch _nach_ der Schleife nicht weiter sondern bleibt da stehen.

    Aber in keiner der drei Situationen wird diese Schleife auch nur einmal durchlaufen, die LED`s (sie leuchten natürlich vorher) werden nie ausgeschalten.
    Beim Compilieren gibt es keinerlei Fehlermeldungen oder auch nur Warnungen.

    Was mach ich nuuuun wieder verkehrt?

  2. #2
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    while(odoklicks != 0);

    Das Semikolon am Ende der Zeile muss weg sonst wird der {}-Block nicht der While-Schleife zugeordnet.

    Gruß

    mic
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    56
    Beiträge
    2.208
    Danke.
    Kaum zu glauben, ich hab im ganzen Programm bestimmt ein halbes Dutzend solcher Schleifen, ohne Semikolon..

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen