示例#1
0
        private static void ComputeFrequency(TimeReference now)
        {
            TimeReference longWindow = now.Subtract(LongWindow);

            if (longWindow.ShouldAdjustFreqency())             //verifica la bontà dell' ActualFrequency sull'intervallo lungo (orologio derivante)
            {
                ApplicaNuovaFrequenza(longWindow);
                LongWindow = now;
            }
        }
示例#2
0
        private static void ComputeFrequency(TimeReference now)
        {
            TimeReference longWindow  = now.Subtract(LastReset);
            TimeReference smallWindow = now.Subtract(MobileWindow);

#if timedebug
            MaxCycleError = 0;
#endif

#if timedebug
            CalcolaFrequenzaDebug(longWindow, now);
#endif

            if (longWindow.InError())             //verifica la bontà dell' ActualFrequency sull'intervallo lungo (orologio derivante)
            {
                ApplicaNuovaFrequenza(longWindow, now);
            }

            if (smallWindow.LowRes >= 2000)             //verifica la bontà dell' ActualFrequency sull'intervallo piccolo (orologio impazzito) - tolleranza 24ms/2000ms = 1.2%
            {
                if (smallWindow.InError())
                {
#if timedebug
                    ShortWTrigger++;
#endif

                    System.Diagnostics.Debug.Write("SWC: ");
                    ApplicaNuovaFrequenza(smallWindow, now);
                    LastReset = now;
                }
                MobileWindow = now;
            }

#if timedebug
            TotalError += MaxCycleError;
            Samples++;
#endif
        }