AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Timer Interrupt IRQ0 als Ereignis

Ein Thema von netpilots · begonnen am 2. Jan 2010 · letzter Beitrag vom 2. Jan 2010
Antwort Antwort
netpilots

Registriert seit: 13. Nov 2004
Ort: Zürich
33 Beiträge
 
Delphi 6 Enterprise
 
#1

Timer Interrupt IRQ0 als Ereignis

  Alt 2. Jan 2010, 02:21
Hallo Delphi Praktiker

Ist es möglich den Timer Interrupt (der mit den 18.2 Hz resp. jener der alle 55ms kommt) zu nutzen? Ich stelle mir das so vor wie den Keyboard- oder Mouse-Event der sich mittels Hook abfangen lässt oder man richtet sich was mit den Messages ein. Für diesen Timer finde ich nichts. Einen Zähler auslesen wäre auch praktisch so wie man das mit GetTickCount macht wenn man eine Auflösung von 1 ms, die aber ungenau sind, will. Das es sehr genau mit QueryPerformanceCounter machen lässt ist schon klar aber bei der Frage geht es um den Ur-Timer wie er schon seit Jahrzehnten bei Intel- und AMD-CPU basierten Board vorhanden ist.

Vielen Dank für die Anregungen
  Mit Zitat antworten Zitat
Astat

Registriert seit: 2. Dez 2009
Ort: München
320 Beiträge
 
Lazarus
 
#2

Re: Timer Interrupt IRQ0 als Ereignis

  Alt 2. Jan 2010, 04:18
Zitat von netpilots:
Ist es möglich den Timer Interrupt (der mit den 18.2 Hz resp. jener der alle 55ms kommt) zu nutzen?
Hallo netpilots, der "Timer Interrupt (INT 8)" des 8254, oder eines compatiblen timer Chip, lässt sich "direkt" nur in Treibern verwenden. Indirekt, also im User-Mode, ist das Teil aber mit der timeGetTime API ansprechbar, ob das ab Vista geändert wurde weiss ich nicht. Könnte auch sein dass für die Api in neueren OS der CMOS real-time clock Interrupt (INT 70h) verwendet wird.
Welcher Interupt mit welcher TimerAPI verheiratet ist, sollte über MSDN - WinApi genauer zu erfahren sein.

Zitat von netpilots:
Ich stelle mir das so vor wie den Keyboard- oder Mouse-Event der sich mittels Hook abfangen lässt oder man richtet sich was mit den Messages ein. Für diesen Timer finde ich nichts. Einen Zähler auslesen wäre auch praktisch so wie man das mit GetTickCount macht wenn man eine Auflösung von 1 ms, die aber ungenau sind, will.
Was willst du denn eigentlich genau machen, ist's nur Interesse oder brauchst du eine Software-Losung?

lg. Astat
Lanthan Astat
06810110811210410503210511511603209711003210010110 9032084097103
03211611111604403209711003210010110903210010510103 2108101116122
11610103209010110510810103206711110010103210511003 2068101108112
10410503210310111509910411410510109810111003211910 5114100046
  Mit Zitat antworten Zitat
netpilots

Registriert seit: 13. Nov 2004
Ort: Zürich
33 Beiträge
 
Delphi 6 Enterprise
 
#3

Re: Timer Interrupt IRQ0 als Ereignis

  Alt 2. Jan 2010, 22:29
Hallo Astat

Danke für die Informationen. Es ist das Interesse an der Theorie wie Frequenz 18.2 Hz resp. Periodendauer 55 ms wirklich entstanden sind und ob sich quarzgenaue Zeitsteuerungen damit realisieren lassen. Eigentlich sind es die Stellen nach dem Dezimalpunkt die interessieren. 18.2 ist nicht wirklich 18.2 wie man aus verschiedenen Dokumentationen nimmt.

Die Dokumentationen sind widersprüchlich, darum wollte ich selbst zählen und messen. Für Zeitsteuerungen (z.B. Warnung nach 58 Minuten dass die Stunde bald voll ist und neue Kosten für die UMTS Verbindung anfallen) werde ich was mit der internen Uhr und Funktionen wie 'now' rechnen lassen was sehr einfach ist.

Die Funktionen GetTickCount und timeGetTime bringen die gleichen Werte. Bei timeGetTime muss ich aber noch die Unit mmSystem laden.
Für Kurzzeitmessungen im ms Bereich eignen sie sich nicht, da nehme ich lieber QueryPerformanceCounter. Kann sein dass sich die Zeit für eine Stunde mit GetTickCount präzise rechnen lässt. Schauen wir mal ob ein Quarz dahinter steckt von dem die Counter abgeleitet wurden und ob sie wirklich unterbrechungsfrei und unabhängig laufen. Mit den Delphi Timern sind genaue Zeiten nicht möglich. Wenn ich einen Timer mit Interval 1000 (1s) 3600 Mal ablaufen lasse ist die Zeit bedenklich weit weg von einer Stunde. Dazu sind diese Timer ja auch nicht gemacht denke ich.

Dank Google sind die Theorien mit dem ersten PC 4.77 MHz und dem Teiler 65536 bekannt. Auch weshalb diese Frequenz 4.77 gewählt wurde steht irgendwo z.B. auch hier:
http://blogs.msdn.com/calvin_hsia/ar...12/213756.aspx

Noch ein Nachtrag. Hier könnte die richtige Folmel stehen Wegen dem Colorburst Quarz und den Teilern. http://marc.info/?l=linux-kernel&m=93344622609581&w=2

So wie ich es jetzt sehe wäre ein spezieller Treiber zu aufwändig um die 18.2 Hz zu zählen.
Gruss Netpilots
  Mit Zitat antworten Zitat
Benutzerbild von thkerkmann
thkerkmann

Registriert seit: 7. Jan 2006
Ort: Pulheim Brauweiler
464 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Timer Interrupt IRQ0 als Ereignis

  Alt 2. Jan 2010, 22:35
Dann würde ich das aber nicht versuchen über Windows zu untersuchen.

(MS) DOS ist das Urschwein des Betriebssystems auf dieser Hardware.

Und wenn man in alten Büchern über DOS und den Timer wühlt wird man da sicher fündig.

Gruss
Thomas Kerkmann
Ich hab noch einen Koffer in Borland.
http://thomaskerkmann.wordpress.com/
  Mit Zitat antworten Zitat
netpilots

Registriert seit: 13. Nov 2004
Ort: Zürich
33 Beiträge
 
Delphi 6 Enterprise
 
#5

Re: Timer Interrupt IRQ0 als Ereignis

  Alt 2. Jan 2010, 22:56
Hast ja Recht, nur wo sind all die DOS Rechner die ich damals hatte

Gruss Netpilots
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#6

Re: Timer Interrupt IRQ0 als Ereignis

  Alt 2. Jan 2010, 23:29
Eventuell könnte RDTSC (Read Time-Stamp Counter) auch interessant sein.

Früher war der mal mit dem Prozessortakt gleichzusetzen, aber seit 'ner Weile werden die wohl anders hochgezählt?
(vorallem sei es mehrere und vorallem dynamisch getacktete CPUs/Kerne in den PCs gibt)
$2B or not $2B
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz