Forum: PC-Programmierung Kleines Problem mit dem Programm


von Andreas Seitner (Gast)


Lesenswert?

Hallo Leute, ich habe eine Frage, ich hoffe ihr könnt mir dabei 
helfen...

Also es geht darum eine PWM im KeilµVision2 zu programmieren, danach 
sollte dieses Programm In den AN2131 gespielt werden. Am Ausgang von 
einem Pin soll dann ein PWM signal rauskommen. Ich habe mich informiert 
in andere Foren und bin auf folgendes gestossen:
int pwm_wert;
do {
 for(int i=0;i<30;i++) {
    if (i>pwm_wert)
      PORT_ANSCHALTEN()
    else
      PORT_ABSCHALTEN();
  }
} while (1)
Aber ich verstehe das nicht , esagen wir
mal das pwm_wert =10 ist. Das heisst dann das der Ausgang 0 ist weil ja
i nicht größer als 10 ist. So sagen wir das die schleife jetzt bei 11
angelangt ist, dann schaltet alles durch. Und danach bleibt ja immer
alles durchgeschaltet weil ja das ''i'' dann immer grödßer bleibt, dh.
es kommt ja dann nicht mehr zum einschalten oder?

Könnte das stimmen ? Danke im Vorhinein
Gruß Andreas

von Karl H. (kbuchegg)


Lesenswert?

Andreas Seitner schrieb:

> angelangt ist, dann schaltet alles durch. Und danach bleibt ja immer
> alles durchgeschaltet weil ja das ''i'' dann immer grödßer bleibt, dh.

irgendwann ist das i gleich 30 geworden und die for-schleife hört auf.
Dadurch kommt dann die aussere while Schliefe wieder zum Zug und alles 
beginnt wieder von vorne. i wird wieder 0 und wird in der for-Schleife 
wieder um 1 hochgezählt.

> Könnte das stimmen ? Danke im Vorhinein

Du hast mit deiner gedanklichen 'Simulation' zu früh aufgehört.

von apr (Gast)


Lesenswert?

Bei der nächsten Iteration der While-Schleife ist i aber wieder kleiner 
als pwm_wert.

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.