Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Re: system.timer() Kategorie: Programmierung (von Wurl - 5.01.2011 10:48)
Als Antwort auf Re: system.timer() von nitraM - 5.01.2011 7:54
Ich nutze:
C164CI-ControllerBoard
[..]
> Besser ist es, dies so zu berechnen:
> system.timer()-timer<=10000
>
> Hier wird die Differenz gebildet. Zu beachten ist aber, da� immer vom "höheren" Wert
> der "kleinere" abgezogen wird. (Oder anders ausgedrückt: Vom aktuelleren (Timer-)Wert mu�
> immer der alte Wert abgezogen werden.)
> Nur so ist die Differenz immer positiv.
[..]

Das gefällt mir gut.
Da kann man auch noch eine kleine Performance-Verbesserung einbauen,
mit einem 'yield' beim Warten bekommen andere Threads mehr Prozessorzeit zugewiesen:


thread Ueberwachung
{
  long systimer_alt;
  long systimer_neu;
  long systimer_delta;
  long wart;
  run xxxx; // hier die ggf. hohe Prio fuer den Thread festlegen
  do  //Warteschleife:
  {
    yield;  //mehr Zeit fuer andere Threads
            //es koennte vielleicht auch ein 'sleep(1)' funktionieren...
            // - einfach mal probieren -
    systimer_neu = system.timer();
    systimer_delta = (systimer_neu - systimer_alt);
  }
  while (systimer_delta < wart) or (Aktflag);
  systimer_alt = systimer_neu;     //Timer-Vergleichswert für nächste Runde speichern
  {
    //Hier der Code, der das neue 'wart' als Relativzeit bestimmt.
    //Da mehrere Timer Ueberwacht werden,
    //  die verbleibenden Zeiten jeweils um 'systimer_delta' reduzieren
    //  und dann auf <=0 vergleichen. (wie im ersten Codebeispiel)
  }
} //end of thread Ueberwachung




    Antwort schreiben


Antworten:

Re: system.timer() (von Detlef - 5.01.2011 17:08)