Hannes schrieb:
> ich habe das problem dass ich in mich in einer while schleife befinde in
> dieser eine PWM durch Taster verändert werden kann. Ich möchte diese
> Schleife mit einem Taster der 2 sec gedrückt sein soll verlassen.
Siehst du.
Und das ist auf einem µC schon mal der falsche Ansatz.
Dein denken kreist um
zuerst mach dieses
dann mach jenes
dann warten wir ein wenig
und dann mach ich noch das
Die Denkweise ist auf einem µC nicht zielführend. Stattdessen musst du
in Ereignissen denken.
Du hast deine Hauptschleife
1 | int main()
|
2 | {
|
3 | ....
|
4 |
|
5 | while( 1 ) {
|
6 | ...
|
7 | }
|
8 | }
|
Diese Hauptschleife läuft ständig. In ihr werden mögliche Ereignisse
abgeprüft (wie zb ob eine Taste gedrückt ist), die entsprechende Aktion
ausgeführt und weiter gehst in der Hauptschleife. Was gar nicht geht:
Innerhalb der Hauptschleife auf irgendetwas warten. So etwas ist Gift.
Im Grunde muss deine Denkweise so aussehen
Im Vergleich zu vorhin ist eine Zeitspanne x vergangen.
Was gibt es jetzt zu tun?
Du musst dir alles in diese Form zurechtlegen. Das kann zb auch heißen,
das man sich Zähler zurechtlegt.
Weiß man, daß die Hauptschleife für einen Durchgang zb 2 Millisekunden
benötigt, dann bedeutet das, dass nach 1000 Durchläufen durch die
Hauptschleife 2 Sekunden vergangen sind. Wird die Taste gedrückt, dann
setzt man einen Zähler zb auf 0. Bei jedem Durchgang durch die
Hauptschleife erhöht man den Zähler und testet ihn. Hat er 2000
erreicht, dann sind 2 Sekunden seit dem drücken der Taste vergangen.
Die Zahlen sind jetzt nur Hausnummern um das Prinzip zu verdeutlichen
und in der Praxis wird man auch einen Timer dafür abstellen. Worum es
geht ist die Denkweise. Weg von sequentieller Abarbeitung. Hin zu: Was
gibt es jetzt im Moment zu tun, welches Ereignis ist im Vergleich zum
letzten Durchlauf durch die Hauptschleife in der Zwischenzeit
eingetreten? Und wenn man nichts anderes hat, dann muss man sich eben
selbst 'Ereignisse schaffen', wie zb ein Zähler der regelmässig erhöht
oder erniedrigt wird und bei dem ein bestimmter Zählerstand eine Aussage
über irgendetwas erlaubt.