Timer in Sekunden

Gast #1230535
Lesenswert?

hallo zusammen,

ich bastel an meiner diplomarbeit und habe da eine frage was den umgang 
bzw. die korrekte verwendung eines timers angeht.

hier die situation:

- 4 Prozesse laufen nacheinander ab
- das ganze wird zyklisch wiederholt
- die dauer der einzelprozesse ist nicht genau gleich und lässt sich 
nicht      beeinflussen (ca 10ms pro prozess)
- die 4 prozesse sollen immer wieder nach 4 sekunden aufgerufen werden 
das heißt die zeit zwischen dem aufruf von prozess 2 und dem nächsten 
aufruf von prozess 2 soll 4 sekunden sein

ich wolle nun zu beginn jedes prozesses einen timer starten und den dann 
eine Sekunde laufen lassen wenn er fertig ist den nächsten prozess 
starten und den timer neu laden. damit würde ich ja erreichen dass die 
gesamtzykluszeit 4 sekunden wäre oder?? =)

nur jetzt hab ich nen 16-bit timer der kann ja bis 65534 zählen mit nem 
vorteiler käme ich im längsten fall auf 2,6µs.
65534 * 2,6µs = 170ms =(

wahrscheinlich ist das problem ganz einfach zu lösen nur steh ich aufm 
schlauch... =)

wäre schön wenn ihr mir nen netten tip geben könntet =)
#1230545
Lesenswert?

Zähle doch im Timer eine Variable hoch. Wenn du z.B. alle 100ms um 1 
erhöhst, musst du nur noch prüfen, ob 10 erreicht wurde.
Dann einfach die Variable zurücksetzen und den passenden Prozess 
starten...

Du kannst natürlich auch bei 10 den ersten Prozess, bei 20 den zweiten, 
usw. starten und bei 40 wieder von vorne anfangen zu zählen...

Chris
Moderator (Firma: Titel) Persönliche Seite #1230552
Lesenswert?

Quick and Dirty: Lass dir alle 100ms einen Interrupt erzeugen und zähl 
auf 40. Dann sind 4 Sekunden vergangen.

Ich mache das üblicherweise so, dass z.B. jede ms ein Interrupt erzeugt 
wird, der eine Variable ulong tiAkt hochzählt. Und alle anderen Zeiten 
berechnen sich relativ zu diesem durchlaufenden Zähler. So etwa:
1
if (tiAkt > tiProzess2) {
2
  Prozess2();
3
  tiProzess2 = tiAkt+4000;
4
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren