www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Zeitverzögerung in switch-case


Important announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Herbert Feuerstein (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Hallo,

ich würde gerne innerhab einer switch-case Anweisung eine zeitliche 
Verzögerung von bestimmmter Zeit einbauen.

Also jeder case würde nur nach einer bestimmten Zeit Befehle ausgeben.

Es gibt hier sicher viele Möglichkeiten das zu machen, und ich habe auch 
schon einige Ideen wie ich das umsetzen könnte, allerdings frage ich 
mich gerade wie man das wohl am elegantesten löst.

Wohlbemerkt soll die Verzögerung über eine einstellbare Zeit 
funktionieren, und nicht nur einen Programmablauf lange verzögern.

Für ein paar Ideen wäre ich euch sehr dankbar.

Das wohl naheliegenste wäre eine Funktion zu implementieren, die in 
jedem case aufgerufen wird, und erst nach ablauf der Zeit eine 
If-Abfrage bedient.

Allerdings könnte man das sicherlich auch durch eine andere Konstruktion 
der switch-case Anweisungen selbst lösen.

Danke für eure Gedankenanstöße

Herbert

Autor: Herbert Feuerstein (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Ich sollte vielleicht noch hinzufügen, daß es sich um C handelt :)

Autor: Oliver J. (skriptkiddy)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert

Autor: Herbert Feuerstein (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Das ist ja echt mal ein Zufall :)

Autor: Herbert Feuerstein (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
....der bestehende Thread liefert allerdings auch keine guten Antworten 
:(

wie gesagt. Ich will nur um ein paar Millisekunden (aber die genau 
einstellbar) verzögern und das ganze so elegant und gut lesbar wie 
möglich.

Autor: Oliver J. (skriptkiddy)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Was soll das ganze bringen?

Autor: Markus Weber (Firma: guloshop.de) (m-w)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Herbert Feuerstein schrieb:
> wie gesagt. Ich will nur um ein paar Millisekunden (aber die genau
> einstellbar) verzögern und das ganze so elegant und gut lesbar wie
> möglich.

Warum nicht eine Funktion bauen, die aktiv eine einstellbare Zeit 
wartet, und sie in jedem Case-Zweig aufrufen?

Autor: Guido (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Hallo,

Markus W. schrieb:
> Warum nicht eine Funktion bauen, die aktiv eine einstellbare Zeit
> wartet, und sie in jedem Case-Zweig aufrufen?

Oder in jedem Case-Zweig eine Variable mit der Wartezeit definieren und 
nach dem Case-Zweig die Wartefunktion aufrufen?

Mit freundlichen Grüßen
Guido

Autor: Falk Brunner (falk)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Siehe statemachine

Autor: Markus Weber (Firma: guloshop.de) (m-w)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Guido schrieb:
> Oder in jedem Case-Zweig eine Variable mit der Wartezeit definieren und
> nach dem Case-Zweig die Wartefunktion aufrufen?

Stimmt, ist geschickter, aber dann frag ich mich, warum man nicht gleich 
ein Array nimmt, in dem man die Wartezeit definiert. Wäre schneller. 
Andererseits will man ja Zeit verbraten. Aber warum unbedingt per 
switch/case?

Bin mir nicht sicher, ob ich den Thread-Ersteller richtig verstanden 
habe...
"Also jeder case würde nur nach einer bestimmten Zeit Befehle ausgeben."
Das heißt, die Zeitschleife müsste tatsächlich in jeden case-Abschnitt 
eingebaut werden, und zwar immer gleich am Anfang, weil danach noch 
"Befehle ausgegeben" werden.

Autor: Karl Heinz Buchegger (kbuchegg) (Moderator)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Ehe man da weitermacht, sollte man sich fragen, ob Zeitschleifen 
überhaupt der richtige Weg sind, oder ob nicht eine Uhr, die zu 
bestimmten Zeitpunkten Aktionen auslöst der richtigere Weg wären.

Autor: Herbert Feuerstein (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Danke für die Antworten,

@Karl Heinz Buchegger:

Genau. Ich mache das auch mit einer Uhr und nicht mit Zeitschleifen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel




Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder GIF-Format hochladen.
Siehe Bildformate
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken erkennst du die Nutzungsbedingungen an.

webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net