http://www.pronix.de -> Forum -> Knobelecke

Forum: Knobelecke

Moderatoren: broesel, juergen

Thema: effektivster Timer

effektivster Timer

ITEDVO am 04.08.2010 um 04:01

hey

hab mir wärend der zugfahrt von der schweiz nach wien ziemlich den kopf darüber zerbrochen was ich mal für ein
rätsel posten könnte =b

naja, in diesem fall gibt es wieder mehrere lösungen. kann sogar für den einen oder anderen für später ziemlich nützlich sein =b


naja, die aufgabe besteht darin:

die ausprogrammierung eines timers, erlaubt sind funktionen wie delay() etc.


hoffe auf mehrere, sowohl schwierige aber vorallem auf sehr effiziente und genaue lösungen.
selber werde ich auch eine lösung präsentieren, hoffe dann auf feedback was besser gemacht werden könnte.


gruß
ITEDVO

--
Was nicht ist, kann noch werden =b
rock by vote or play by vote
<a href="http://www.selfmades.eu" target="blank"><img src="http://selfmades.eu/Clanwerbung/LinkUs/ITEDVO.jpg" alt="Clan Selfmades" title="Clan Selfmades"></a>

 

Re: effektivster Timer

Patrick am 04.08.2010 um 12:00

#include <stdio.h>
#include <stdlib.h>
#include <sys/select.h>


int main()
{
 struct timeval timeout;
 int i=0;

 while(i<100)
 {
  timeout.tv_sec  = 0;
  timeout.tv_usec = 50000; // 50000 Mikrosekunden
  select(0, NULL, NULL, NULL, &timeout);
  printf("%d. Erwachen\n", i++);
 }
 return EXIT_SUCCESS;
}

--
To follow the path: look to the master, follow the master, walk with the master, see through the master, become the master.

 

Re: effektivster Timer

Martin Conrad (webmaster) am 06.08.2010 um 21:26

Huhu Patrick,

nö, im Userspace muss man schon mit Korrekturwerten arbeiten. Ein Weg ist es sich auf die Systemzeit zu beziehen(microtime() o.Ä.) um dann Korrekturwerte zu erhalten. Ansonsten rennt so ein Timer aus der Bahn.

Bis denne

Martin

--
0xC0FFEE

 

Re: effektivster Timer

Patrick am 07.08.2010 um 10:05

Martin: Wenn etwas exakt alle 1 Sekunde laufen _muss_, hilft auch ein Korrekturwert nichts, wenn das Programm erst nach 1,1 Sekunden aufgerufen wird. Man kann dann zwar den Timeout für den nächsten Aufruf auf 0,9 Sekunden setzen, aber das war es auch schon. Ich stimme dir also nur teilweise zu und freue mich auf genauere Lösungen Grafik: Smilie Zwinker

--
To follow the path: look to the master, follow the master, walk with the master, see through the master, become the master.

 

Re: effektivster Timer

Martin Conrad (webmaster) am 07.08.2010 um 11:29

Zitat:

Martin: Wenn etwas exakt alle 1 Sekunde laufen _muss_, hilft auch ein Korrekturwert nichts, wenn das Programm erst nach 1,1 Sekunden aufgerufen wird. Man kann dann zwar den Timeout für den nächsten Aufruf auf 0,9 Sekunden setzen, aber das war es auch schon. Ich stimme dir also nur teilweise zu und freue mich auf genauere Lösungen Grafik: Smilie Zwinker


Da sind wir dann bei nem Echtzeitsystem, das die Toleranzen genau definiert und die dann garantiert werden müssen. Lösbar ist das wohl nur im Kernelspace, weil die Verzögerungen und Ungenauigkeiten sonst von Shedulerentscheidungen abhängig sind.

Bis denne

Martin

--
0xC0FFEE