Forum: Mikrocontroller und Digitale Elektronik IF-Scheife wird nicht verlassen


von Philipp (Gast)


Lesenswert?

Guten Morgen,

also ich habe folgendes Problem:

Bei meiner IF-Schleife

if((Rot_ST >= ROT_STROM_SOLL1) && (Rot_ST <= ROT_STROM_SOLL2))
  {
  send_text("Dieser Text wieder unendlich mal ausgegeben");
  }
  else{fehlerausgabe(ROT);}

if((Gelb_ST >= GELB_STROM_SOLL1) && (Gelb_ST <= GELB_STROM_SOLL2))
  {
  }
  else{fehlerausgabe(GELB);}

vergleicht er die Werte und wenn die Bedingung zutrifft soll er in die 
nächste Schleife gehen aber das tut er nicht. Wenn die Bedingung 
zutrifft gibt er mir unendlich oft den Text der 1. Schleife aus.

Kann mir jemand verraten wieso er das tut?

Vielen Dank schonmal im Vorraus.

von Kola (Gast)


Lesenswert?

Deine Bedingungen sind wohl falsch.
WENN rot_st GRÖßERGLEICH .. UND KLEINERGLEICH...

Ich glaube, du musst statt dem AND (&&) ein OR (||) machen.

von Marvin (Gast)


Lesenswert?

if / else ist keine Schleife.
Schleifen werden mit for(), while() oder do{}while(); realisiert.

Von allein springt das Programm mit Sicherheit nicht zurück zur 
if-Bedingung, ich vermute irgendein Problem in der send_text() - 
Routine, die einen Reset auslöst. Stacküberlauf, Pointerprobleme o.ä.
Poste doch bitte mal den gesamten Code.


von Philipp (Gast)


Lesenswert?

@Marvin: Ok du hast recht eigentlich ist es ne IF-Anweisung.

@Kola: Im Grunde sag ich dem Programm nur das der Wert den er bekommt 
nicht unbedingt genau der selbe sein darf er darf sich +- um einen 
bestimmten Wert unterscheiden ohne das er in die Else Anweisung springt.

Mein Problem ist halt nur obwohl die Bedingung zutrifft geht er nicht 
weiter und bleibt immer in der IF-Anweisung! Die Else-Anweisung wrid 
nicht aufgerufen!

Den Text den ich da reingeschrieben habe habe ich nur zur visuellen 
bestätigung dort eingefügt damit ich sehe das er immer wieder die 
IF-Anweisung ausführt da meine Bildschirmausgabe so aussieht:

Dieser Text wieder unendlich mal ausgegeben
Dieser Text wieder unendlich mal ausgegeben
Dieser Text wieder unendlich mal ausgegeben
Dieser Text wieder unendlich mal ausgegeben
u.s.w.

Den Text Befehl kann ich aber auch weglassen da tut sich ebenfalls 
nichts!

von johnny.m (Gast)


Lesenswert?

> Mein Problem ist halt nur obwohl die Bedingung zutrifft geht er nicht
> weiter und bleibt immer in der IF-Anweisung! Die Else-Anweisung wrid
> nicht aufgerufen!
Hä? Genau das soll er doch machen, wenn die Bedingung erfüllt ist.

Also:
1.: Poste mal mehr von Deinem Code (ohne den wird hier niemand Dein 
Problem nachvollziehen können)
2.: Formuliere Deine Aussagen so, dass man sie auch nachvollziehen kann.

von Philipp (Gast)


Lesenswert?

Hab das Probelm selbst schon behoben.

Es lag daran das die IF-Anweisung in einer For Schleife ist und ich die 
laufvariable i (für die For-Schleife) nicht lokal sondern global 
deklariert habe!

Trotzdem danke für die Kritik und die Lösungsvorschläge.

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.