Timer in C - Motorsteuerung

Von: , Frage gestellt am Do, 17. Jan 2008

Hallo,
ich arbeite zur Zeit an einer Steuerung für einen Schrittmotor; programmiert in C (Borland C++ Builder).
Der Motor selbst läuft nur Timergesteuert, was auch im Einzelaufruf kein Problem darstellt, da keine andere Funktion (per "Knopfdruck") aufgerufen werden kann, bis die Zielposition erreicht ist (Button deaktiviert).

Jetzt will ich eine Funktion erstellen, der man die Motorparameter übergibt, die den Motor wie bisher per Timer startet und aus der man erst zurückkehrt, wenn die Zielposition erreicht ist. Mein Problem dabei: Die Funktion wird beendet, bevor das Ziel erreicht ist. Der Motor fährt zwar auf die Zielpos., allerdings werden währenddessen evt. schon weitere Funktionen ausgeführt. Das würde ich gerne verhindern.

Ich habe schon mit TEvent (WaitFor) und Sleep experimentiert, allerdings läuft das ganze in einem Thread und der wird leider für die Zeit komplett angehalten. Hat jemand eine Idee, wie man diese Funktion realisieren kann? Meine Erfahrungen mit C sind leider begrenzt...

2 Antworten zu dieser Frage

  1. Antwort von nach 35 Minuten 0 hilfreich
    Re: Timer in C - Motorsteuerung

    Hallo Fragewurm, Jetzt will ich eine Funktion erstellen, der man die
    Motorparameter übergibt, die den Motor wie bisher per Timer
    startet und aus der man erst zurückkehrt, wenn die
    Zielposition erreicht ist. Mein Problem dabei: Die Funktion
    wird beendet, bevor das Ziel erreicht ist. Der Motor fährt
    zwar auf die Zielpos., allerdings werden währenddessen evt.
    schon weitere Funktionen ausgeführt. Das würde ich gerne
    verhindern.
    Du brauchst eine Semaphore:
    http://de.wikipedia.org/wiki/Semaphor_%28Informatik%29

    In deinem Fall sollte ein Flag genügen.

    1. Deine Funktion checkt als erstes das Flag, ist es gesetzt kehrt sie mit einer Fehlermeldung zurück oder wartet bis das Flag gelöscht wird.
    2. Ist das Flag gelöscht, wird es gesetzt und die Timerfunktion gestartet.
    3. Hat die Timerfunktion die Endposition erreicht, löscht sie das Flag.

    MfG Peter(TOO)

    • Antwort von nach 16 Stunden 0 hilfreich
      Re^2: Timer in C - Motorsteuerung

      Vielen Dank für die Antwort. Mal schauen, ob ich damit allein zurecht komme - falls nicht, drohe ich schon mal weitere Fragen an ;) VIelen Dank! [Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Keine passende Antwort gefunden? Jetzt eigene Frage stellen!