Forum: Compiler & IDEs While schleife Zeitgesteuert verlassen


von Andreas Weiler (Gast)


Lesenswert?

Hi. Kann mir jemand sagen, wie ich eine while schleife z.b. nach 5
sekunden verlassen kann, und danach die nächste schleife widerrum für
eine gewisse Zeit durchlaufen wird, ehe im programm weitergefahren wird
?
Bin leider noch neu in sachen AVR programmierung.

schonmal danke an euch,

Andreas

von Jens D. (Gast)


Lesenswert?

des macht man mit einem Timer und keiner WHILE Schleife.

Timer Starten und immer einen Captore / Overflow erzeugen

in dem Interrupt handler eine glibale Variable (systick) hochzaehlen
und dann in der main diese variable auswerten

von Andreas Weiler (Gast)


Lesenswert?

Entschuldigung. hatte vergessen zu erwähnen, das ich noch Anfänger bin.
Somit kann ich mit deiner Erklärung nicht viel anfangen.
Dachte natürlich das es einfacher gehen würde.
Aber ich werde nun mal unter allen Punkten die du hier ansprichst mal
nachlesen. Hab mit Interrupts noch nichts gemacht.

Aber trotzdem schonmal danke für die Tipps.

Gruß

von Michael (Gast)


Lesenswert?

extern long get_timer(); // z.B. in ms
long timeout;

timeout = get_timer()+5000; // maximal 5 sekunden
while(timeout > get_timer() && zusatzbedingung) {
  ....
  ....
} // die Schleife läuft max. 5 sekunden

von Benedikt (Gast)


Lesenswert?

Falls das ganze nur als Aufhäng Schutz für den Fall dass z.B. ein LCD
das Busy Flag nie löscht dienen soll, dann reicht auch eine einfache
Lösung indem man eine Variable in der while Schleife hochzählt und ab
einem bestimmten Wert die Schleife verlässt.

von Andreas Weiler (Gast)


Lesenswert?

Hallo,
@ Benedikt, genau so hab ichs jetzt auch geschafft. ich danke euch.
Gruß,
Andreas

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.