Homepage

  • Projekte
  • Shop
  • Forum
Erweiterte Suche
  • Schnellzugriff
    • Unbeantwortete Themen
    • Aktive Themen
    • Suche
  • FAQ
  • Anmelden
  • Registrieren
  • Foren-Übersicht
  • Suche

Anfängerfrage: Timer statt delay

Ethernet Mega32 Experimentierboard
Antworten
  • Druckansicht
Erweiterte Suche
6 Beiträge • Seite 1 von 1
aetsch-baetsch
Beiträge: 20
Registriert: 30.09.2009, 20:54:16

Anfängerfrage: Timer statt delay

  • Zitieren

Beitrag von aetsch-baetsch » 26.05.2015, 11:41:55

Hallo,

ich stehe momentan vor einem Problem, wo Ihr mir hoffentlich helfen könnt:
Auf meinem Board läuft die Software 1.2.9 von Uli. Dort habe ich für eine einfache Anwendung die Eingänge mit den Ausgängen verknüpft (Eingang 1 schaltet Ausgang 1, etc.). Dies funktioniert über Schalter und über das WebIF.

Nun möchte ich aber für z.B. Eingang/Ausgang 2 folgendes:

Wenn ich einen Taster oder einen Button im WebIF an Eingang 2 drücke, soll der Ausgang 2 für 5 Sekunden "EIN" sein, und dann wieder auf "AUS" gehen.

Mit der delay-Funktion habe ich das schon hin bekommen, aber leider wird ja in dieser Zeit das Board lahmgelegt. Somit kann ich nicht in der Zwischenzeit Eingang/Ausgang 1 schalten.

Jetzt habe ich schon mitbekommen, dass man soetwas über timer löst... nur wie???
Ich habe auch das ganze Wochenende schon versucht es selbst zu schaffen bzw. zu begreifen wie das funktioniert und programmiert wird. Doch leider blicke ich da einfach nicht durch...

Kann mir da bitte wer weiterhelfen oder erklären.

Bin für jede Hilfe dankbar...

MfG
Nach oben

Erics
Beiträge: 50
Registriert: 15.05.2013, 08:14:40
Wohnort: Bad Salzuflen
Kontaktdaten:
Kontaktdaten von Erics
Website

Re: Anfängerfrage: Timer statt delay

  • Zitieren

Beitrag von Erics » 26.05.2015, 12:24:26

Normal nimmt man einen Timer als Zeitbasis. Z.B. 100ms. Dieser löst alle 100ms ein Event aus.

Dann hast du pro Ausgang eine Zeit die z.B. beim Setzen des Ausgangs in eine Variable geschrieben wird. Bei 5 Sekunden wären das in 100ms Schritten 50.

Jetzt benötigst du eine Funktion die du zyklisch aufrufst. Diese überprüft ob das 100ms Event vom Timer gekommen ist, dann werden alle Variablen für die Ausgänge die größer 0 sind um 1 runtergezählt.
Hat die Variabel für den Ausgang 0 erreicht setzt du den Ausgang zurück.

Ähnlich kann man auch Einschaltverzögerungen bauen.
Nach oben

Benutzeravatar
Ulrich
Site Admin
Beiträge: 3054
Registriert: 29.02.2004, 18:12:19
Wohnort: Siegen
Kontaktdaten:
Kontaktdaten von Ulrich
Website

Re: Anfängerfrage: Timer statt delay

  • Zitieren

Beitrag von Ulrich » 26.05.2015, 13:05:38

Hallo,

man kann den vorhandenen Timer verwenden!

Code: Alles auswählen

main.c

unsigned long time_old = 0;

if(time > time_old)
{
    time_old = time + 5;

    ......
    Routine wird alle 5s aufgerufen
    ......
}

Gruß
Uli
Nach oben

aetsch-baetsch
Beiträge: 20
Registriert: 30.09.2009, 20:54:16

Re: Anfängerfrage: Timer statt delay

  • Zitieren

Beitrag von aetsch-baetsch » 02.06.2015, 10:39:57

Sorry für die späte Antwort, aber ich habe erst jetzt Zeit gefunden an meinem Problem wieder weiter zu machen.
Vorerst einmal DANKE für die Antworten!

Ich habe jetzt den Code von Ulrich eingebaut, jedoch gibt es da ein Problem:

Der Ausgang schaltet zwischen 4 - 5 Sekunden wieder aus. Ich brauche jedoch immer eine konstante Zeit!

Kann es sein, dass der Timer ständig läuft, und wenn zufällig der Taster oder Button gegen "Ende" einer Sekunde gedrückt wird dadurch nur etwas mehr als 4 Sekunden vergehen?
(Hoffe Ihr könnt mir folgen...)

Ich würde es eben so benötigen:

Taster/Button wird gedrückt -> Ausgang "ein" -> Timer beginnt zu zählen -> sobald Timer z.B. 5 Sekunden erreicht (wichtig ist, dass es immer die selbe Zeit ist die vergeht) -> Ausgang "aus"

Durch welchen Befehl wird den der Timer in main.c gestartet?
Das mit dem if(time > time_old)... ist mir schon klar, aber wo steht "ab jetzt".

MfG
Nach oben

Benutzeravatar
Ulrich
Site Admin
Beiträge: 3054
Registriert: 29.02.2004, 18:12:19
Wohnort: Siegen
Kontaktdaten:
Kontaktdaten von Ulrich
Website

Re: Anfängerfrage: Timer statt delay

  • Zitieren

Beitrag von Ulrich » 02.06.2015, 22:19:37

Ja das ist dein Problem, eine Sekunde ist lang. Benutze deinen eigenen Timer der schneller läuft.

Gruß
Uli
Nach oben

rdeutsch
Beiträge: 5
Registriert: 20.08.2015, 03:49:27
Kontaktdaten:
Kontaktdaten von rdeutsch
Website

Re: Anfängerfrage: Timer statt delay

  • Zitieren

Beitrag von rdeutsch » 21.08.2015, 04:00:02

STIMMT! :D

Ich stimme mit dieser Ansicht.






folie iphone 6s plus
Nach oben

Antworten
  • Druckansicht

6 Beiträge • Seite 1 von 1

Zurück zu „ETH_M32_EX“



  • Foren-Übersicht
  • Alle Zeiten sind UTC+02:00
  • Alle Cookies löschen

Powered by phpBB® Forum Software © phpBB Limited

Deutsche Übersetzung durch phpBB.de

Datenschutz | Nutzungsbedingungen

 

 

sitemap  |    |  datenschutz   |  impressum