PBOSL 1.0 (OpenSource Library-Sammlung)
- hardfalcon
- Beiträge: 3447
- Registriert: 29.08.2004 20:46
- hardfalcon
- Beiträge: 3447
- Registriert: 29.08.2004 20:46
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Eine höhere Auflösung, als die des HighResTimers ist meines Wissens nach nur mit zusätzlicher Hardware möglich. Ansonsten gibts dazu auch noch einen PB-Source:
Auszug aus Droopy's Lib
Code: Alles auswählen
; Idea from Erix14 / Djes
; Return the time elapsed between Start & Stop in second
; 0.001 = 1 ms
; 0.000001=1 µs
; Caution ! : If the installed hardware supports a high-resolution performance counter
; MeasureHiResIntervalStart return 1 / 0 if no hardware support
; Use this functions for measure interval < 1 ms
Global MeasureHiResIntervalTime.l
ProcedureDLL MeasureHiResIntervalStart()
QueryPerformanceFrequency_(@retour)
If retour <>0 : retour = 1 : EndIf
QueryPerformanceCounter_(@MeasureHiResIntervalTime)
ProcedureReturn retour
EndProcedure
ProcedureDLL.f MeasureHiResIntervalStop()
QueryPerformanceCounter_(@Temp)
Difference=Temp-MeasureHiResIntervalTime
QueryPerformanceFrequency_(@HiResTimerFrequency)
Periode.f=1/HiResTimerFrequency
DureeTotale.f=Difference*Periode
ProcedureReturn DureeTotale
EndProcedure
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Er meint schon den HighResTimer, siehe hier: http://forums.purebasic.com/german/viewtopic.php?t=4625
Bloß der wird ja in der Timer Lib des PBOSL schon verwendet
Bloß der wird ja in der Timer Lib des PBOSL schon verwendet

PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

- hardfalcon
- Beiträge: 3447
- Registriert: 29.08.2004 20:46
- hardfalcon
- Beiträge: 3447
- Registriert: 29.08.2004 20:46
Was, glaubst du wohl, nimmt dein PC als Basis für seinen Timer? Glaubst du, der fragt hinter deinem Rücken per WLan den Funkwecker aufm Schreibtisch ab?
Natürlich hat dein PC auch ein Quarz (meist sogar mehrere) auf dem Motherboard verlötet. Mach mal den tower auf, und suche auf dem Motherboard nach 4-5mm breiten, 10-20mm langen, ovalförmigen "Weissblechpillen". Das sind die Quarze in deinem PC. Der Timer hat in einem PC noch ganz andere Aufgaben als nur die Zeitberechnung. Z.b. braucht man den Timer auch, um einen Befehl wie "Beep_()" in ASM umzusetzen. Ich bin mir nicht sicher, aber es kann sein, dass der PC sogar die Prozessorgeschwindigkeit mit Hilfe eines Quarzes definiert...

Natürlich hat dein PC auch ein Quarz (meist sogar mehrere) auf dem Motherboard verlötet. Mach mal den tower auf, und suche auf dem Motherboard nach 4-5mm breiten, 10-20mm langen, ovalförmigen "Weissblechpillen". Das sind die Quarze in deinem PC. Der Timer hat in einem PC noch ganz andere Aufgaben als nur die Zeitberechnung. Z.b. braucht man den Timer auch, um einen Befehl wie "Beep_()" in ASM umzusetzen. Ich bin mir nicht sicher, aber es kann sein, dass der PC sogar die Prozessorgeschwindigkeit mit Hilfe eines Quarzes definiert...

- mueckerich
- Beiträge: 220
- Registriert: 13.09.2004 11:33
- Wohnort: Am schönsten Flecken der Erde, zwischen PC und Motorrad
mal eine rein technische Frage.
Der Quarz (Oszillator) ist der eigentlich der Herzschlag der CPU, alle Aktionen der CPU laufen in diesem Takt, das heißt es gibt Maschinenbefehle die brauchen 1-x Takte um abgearbeitet zu werden. Dieser Takt stellt eigentlich die Zeitbasis (nicht zu verwechseln mit der Zeit des RTC-Bausteins) für dein System dar. Wie willst Du da die Quarzfrequenz sicher ermitteln, wenn die unterschiedlichen ASM Befehle, aus denen Dein Prog besteht, n Taktzyklen zum abarbeiten brauchen. Du kannst auch nicht die Zeit zwischen 2 Takten messen, da du dafür ja einen andere Referenz bräuchtest da die CPU in der Zeit ja nix über die tatsächlich vergangene Zeit mitkriegt. Selbst wenn du die Takte innerhalb einer bestimmten Zeit (Torzeit in de Elektronik genannt) zählen wolltest brauchst du etwas, was schneller rechnet oder eine reine Hardwarelösung. Ich kann meine Takte nicht selbst Zählen, wenn ich für jedes Zählen mehrere Takte benötige. Die Taktfrequenz die Dir die CPU zurückmeldet wird nämlich rein Hardwäremäßig erfasst und ist auch nur so ein "Pi mal Daumen" Wert, die bauen da ja keinen hochgenauen Frequenzzähler für eine menge Kohle ein. Und für einen gnadenlos hochauflösenden Timer ist eine Taktzeitschätzung ja wohl unbrauchbar.

Der Quarz (Oszillator) ist der eigentlich der Herzschlag der CPU, alle Aktionen der CPU laufen in diesem Takt, das heißt es gibt Maschinenbefehle die brauchen 1-x Takte um abgearbeitet zu werden. Dieser Takt stellt eigentlich die Zeitbasis (nicht zu verwechseln mit der Zeit des RTC-Bausteins) für dein System dar. Wie willst Du da die Quarzfrequenz sicher ermitteln, wenn die unterschiedlichen ASM Befehle, aus denen Dein Prog besteht, n Taktzyklen zum abarbeiten brauchen. Du kannst auch nicht die Zeit zwischen 2 Takten messen, da du dafür ja einen andere Referenz bräuchtest da die CPU in der Zeit ja nix über die tatsächlich vergangene Zeit mitkriegt. Selbst wenn du die Takte innerhalb einer bestimmten Zeit (Torzeit in de Elektronik genannt) zählen wolltest brauchst du etwas, was schneller rechnet oder eine reine Hardwarelösung. Ich kann meine Takte nicht selbst Zählen, wenn ich für jedes Zählen mehrere Takte benötige. Die Taktfrequenz die Dir die CPU zurückmeldet wird nämlich rein Hardwäremäßig erfasst und ist auch nur so ein "Pi mal Daumen" Wert, die bauen da ja keinen hochgenauen Frequenzzähler für eine menge Kohle ein. Und für einen gnadenlos hochauflösenden Timer ist eine Taktzeitschätzung ja wohl unbrauchbar.
"Wenn Sie glauben, mich verstanden zu haben, dann habe ich mich falsch ausgedrückt" ( Alan Greenspan)