I have tried x32 & x64 compiler & older version, run the exe on WinXP all with similar results.
The compiling PC is non networked Win7x64P.
I was previously using WM_TIMER with 1000ms & 100ms so probably didn't notice the overTime.
I just noticed this recently as I was trying to poll an input at 1 ms period.
Test Code.
Code: Select all
Dim As UInteger TimerOld, TimerDiff
For Lp1 As UInteger = 50 To 1 Step -1
TimerOld = Int(Timer*1000)
Sleep Lp1
TimerDiff = Int(Timer*1000) - TimerOld
Print "Lp1= "; Lp1, "TimerDiff= "; TimerDiff
Next
Sleep
Code: Select all
C:\Programs\FreeBASIC-1.10.0-winlibs-gcc-9.3.0\fbc32 -s console "Testing ms.bas"
-----------------------------
Lp1= 100 TimerDiff= 119
Lp1= 96 TimerDiff= 107
Lp1= 92 TimerDiff= 93
Lp1= 88 TimerDiff= 92
Lp1= 84 TimerDiff= 92
Lp1= 80 TimerDiff= 92
Lp1= 76 TimerDiff= 76
Lp1= 72 TimerDiff= 76
Lp1= 68 TimerDiff= 76
Lp1= 64 TimerDiff= 76
Lp1= 60 TimerDiff= 61
Lp1= 56 TimerDiff= 60
Lp1= 52 TimerDiff= 61
Lp1= 48 TimerDiff= 61
Lp1= 44 TimerDiff= 45
Lp1= 40 TimerDiff= 46
Lp1= 36 TimerDiff= 45
Lp1= 32 TimerDiff= 45
Lp1= 28 TimerDiff= 29
Lp1= 24 TimerDiff= 30
Lp1= 20 TimerDiff= 30
Lp1= 16 TimerDiff= 30
Lp1= 12 TimerDiff= 14
Lp1= 8 TimerDiff= 14
Lp1= 4 TimerDiff= 14
----------------------------
Lp1= 50 TimerDiff= 59
Lp1= 49 TimerDiff= 61
Lp1= 48 TimerDiff= 61
Lp1= 47 TimerDiff= 61
Lp1= 46 TimerDiff= 45
Lp1= 45 TimerDiff= 45
Lp1= 44 TimerDiff= 45
Lp1= 43 TimerDiff= 46
Lp1= 42 TimerDiff= 45
Lp1= 41 TimerDiff= 45
Lp1= 40 TimerDiff= 45
Lp1= 39 TimerDiff= 45
Lp1= 38 TimerDiff= 46
Lp1= 37 TimerDiff= 45
Lp1= 36 TimerDiff= 45
Lp1= 35 TimerDiff= 45
Lp1= 34 TimerDiff= 45
Lp1= 33 TimerDiff= 45
Lp1= 32 TimerDiff= 45
Lp1= 31 TimerDiff= 30
Lp1= 30 TimerDiff= 30
Lp1= 29 TimerDiff= 30
Lp1= 28 TimerDiff= 29
Lp1= 27 TimerDiff= 29
Lp1= 26 TimerDiff= 30
Lp1= 25 TimerDiff= 28
Lp1= 24 TimerDiff= 27
Lp1= 23 TimerDiff= 27
Lp1= 22 TimerDiff= 27
Lp1= 21 TimerDiff= 28
Lp1= 20 TimerDiff= 28
Lp1= 19 TimerDiff= 27
Lp1= 18 TimerDiff= 27
Lp1= 17 TimerDiff= 27
Lp1= 16 TimerDiff= 28
Lp1= 15 TimerDiff= 12
Lp1= 14 TimerDiff= 12
Lp1= 13 TimerDiff= 12
Lp1= 12 TimerDiff= 12
Lp1= 11 TimerDiff= 12
Lp1= 10 TimerDiff= 12
Lp1= 9 TimerDiff= 12
Lp1= 8 TimerDiff= 12
Lp1= 7 TimerDiff= 12
Lp1= 6 TimerDiff= 12
Lp1= 5 TimerDiff= 12
Lp1= 4 TimerDiff= 12
Lp1= 3 TimerDiff= 12
Lp1= 2 TimerDiff= 12
Lp1= 1 TimerDiff= 12