Hilfe Stufentimer

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.

    Hinweis kann nach Kenntnisnahme deaktiviert werden!

    • Schau dir mal diesen Code genau an:

      BASCOM-Quellcode: Zustand ST_MENU_EDIT

      1. ' ------------------------------
      2. Case ST_MENU_EDIT ' Menu Zeit bearbeiten
      3. ' ------------------------------
      4. If FSM_StateChanged() = True then
      5. Timer_Wert = 000
      6. Call MUX_SetString( "000")
      7. Call MUX_SetDot(2)
      8. Call TMR_ResetInterval()
      9. End If
      10. If getTaste_Menu() = True then ' Menu bricht die Bearbeitung ab
      11. Call FSM_SetState(ST_MENU_ABBRUCH)
      12. ElseIf getTaste_Plus() = True then ' Timer-Wert erhöhen (+10)
      13. If Timer_Wert < 900 then
      14. Timer_Wert = Timer_Wert + 10
      15. Call MUX_SetZahl(Timer_Wert)
      16. End If
      17. ElseIf getTaste_Minus() = True then ' Timer-Wert verringern (-10)
      18. If Timer_Wert > 1 then
      19. Timer_Wert = Timer_Wert - 10
      20. Call MUX_SetZahl(Timer_Wert)
      21. End If
      22. ElseIf getTaste_Start() = True then ' Timer starten
      23. Call FSM_SetState(ST_TIME_RUN)
      24. Set pin_Schaltausgang
      25. End If
      26. If TMR_Interval_2Hz = True then
      27. Reset TMR_Interval_2Hz
      28. Call MUX_ToggleDot(2) ' Punkt blinken lassen
      29. Call MUX_ToggleDot(1)
      30. End If
      31. ' ------------------------------
      32. Case ST_MENU_ABBRUCH ' Menu Abbruch
      33. ' ------------------------------
      Alles anzeigen
      Wenn der Taste Start gedrückt wird (Zeile 27), wird der Zustand ST_TIME_RUN in Zeile 29 aktiviert.
      Bedeutet, die Taste Start bewirkt einen Zustandswechsel in den Zustand ST_TIME_RUN. Und dort wird der Schaltausgang gesetzt.

      Dein 1. Fehler ist, dass du schon in Zeile 31 den Schaltausgang setzt und dann im Zustand ST_TIME_RUN nochmal.
      Zeile 31 löschen!

      Wenn du verhindern willst, dass der Schaltausgang schaltet, wenn der 'Timer_Wert' auf 0 steht und die Start-Taste gedrückt wird, dann must du dafür sorgen, dass du den Zustand ST_TIME_RUN nicht aktivierst, wenn 'Timer_Wert' = 0 ist.

      Du musst also bevor du den Zustand änderst abfragen, ob Timer_Wert = 0 ist, und wenn ja, dann z.B. Zustand ST_MENU_ABBRUCH oder ST_IDLE aktivieren (deine Wahl). Nur wenn Timer_Wert <> 0 ist, dann macht es Sinn, den Zustand in ST_TIME_RUN zu ändern.