mikrocontroller.net

Forum: PC-Programmierung Zeiten unter 1 Sekunde in ANSI-C messen


Autor: C-Programmier-Versucher (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich probrammiere eine Software, welche sowohl unter Windows wie auch 
unter Linux kompiliert werden können sollte. Deshalb verwende ich nur 
ANSI-C-Bibliotheken.
Nun brauche ich einige Funktionen, mit denen ich Zeiten messen kann. 
Dazu gibt es z.B. die time.h, die liefert aber nur eine Auflösung von 1 
Sekunde. Ich bräuchte etwas wo die Auslösung grösser ist. Muss nicht 
wahnsinnig genau sein, es soll nur entschieden werden können, ob ein 
Timeout aufgetreten ist (also z.B. T_neu > T_alt + 20 Millisekunden). Es 
macht also nichts wenn es nicht bis auf die letzte Millisekunde stimmt. 
Weiss da jemand etwas?

Vielen Dank!

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sieh dir die Funktion clock() mal an.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da sollte es die Funktion clock geben. Die gibt einen Wert zurück, der 
auf CLOCKS_PER_SEC Bruchteile einer Sekunde genau ist.

Wie hoch dieser Wert ist, ist implementierungsabhängig.

Beides (der Prototyp von clock und die Konstante CLOCKS_PER_SEC) 
steht in time.h.

Auf Win32 ist CLOCKS_PER_SEC üblicherweise 1000.

Autor: Thomas Bremer (Firma: Druckerei Beste) (virtupic)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ANSI-C... Schade eigentlich. Unter Unix gibt es die Funktion 
"gettimeofday", die dir die Uhrzeit mit 1 us Auflösung liefert. Ist aber 
leider nicht ANSI-C.

virtuPIC

Autor: C-Programmier-Versucher (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat wunderbar geklappt, habt vielen Dank.
BTW, was passiert wenn ich dies auf einem Mikrocontroller ausführen 
würde? Wenn wir ja schon in einem Mikrocontrollerforum sind. Gehe ich 
richtig in der Annahme, dass es da im Allgemeinen nicht funkionieren 
wird, weil sich der Compiler nicht selbständig an den Timern zu schaffen 
macht? Oder wird die Zeit auf eine andere Zeit gemessen? Hat ein 
PC-Prozessor auch so Timer wie ein Mikrocontroller? Fragen über 
Fragen...

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sicher hat ein µC Timer, aber die C-Runtime-Umgebung für einen µC 
enthält i.d.R. keine einzige der Funktionen aus time.h.

Ein PC-Prozessor selbst hat keine Timer (wenn man mal die "performance 
counter" neuerer Prozessoren ignoriert), aber die sind, wie auch die 
ganze andere Peripherie, "off-chip" in der Umgebungselektronik 
("Chipsatz") untergebracht. Die Standard-PC-Architektur verwendet hier 
den Timerbaustein i8254, der natürlich in jedem PC aus diesem 
Jahrtausend nur noch als IP-Core irgendwo im Chipsatz herumdümpelt.

Autor: C-Programmier-Versucher (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OK, wieder was gelernt, vielen Dank!!

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Die Standard-PC-Architektur verwendet hier den Timerbaustein i8254, der
> natürlich in jedem PC aus diesem Jahrtausend nur noch als IP-Core
> irgendwo im Chipsatz herumdümpelt.

Aktuelle Systeme verwenden eher den HPET.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.