public CrystalTimer(Quartz32768HzCrystal master, Scheduler scheduler, int timerNumber) { switch (timerNumber) { case 1: InterruptId = Calculator.InterruptId.CrystalTimer1; break; case 2: InterruptId = Calculator.InterruptId.CrystalTimer2; break; case 3: InterruptId = Calculator.InterruptId.CrystalTimer3; break; default: throw new ArgumentOutOfRangeException("timerNumber must be between 1 and 3"); } TimerNumber = timerNumber; MasterTimer = master; //Oscillation = new EventHandler(DoTick); Scheduler = scheduler; NextWtIncrement = new Scheduler.WallTimeEvent(); NextWtIncrement.Tag = "Crystal timer " + timerNumber.ToString() + " wall-time tick"; NextWtIncrement.Handler = new EventHandler <Scheduler.WallTimeEvent>(DoTickWt); NextScIncrement = new Scheduler.SystemClockEvent(); NextScIncrement.Tag = "Crystal timer " + timerNumber.ToString() + " clock-time tick"; NextScIncrement.Handler = new EventHandler <Scheduler.SystemClockEvent>(DoTickSc); //Scheduler.EnqueueRelativeEvent(NextWtIncrement, 1.0 / 32768); }
//internal Quartz32768HzCrystal MasterTimer; public ApdTimerSe(Scheduler sched, Calculator.InterruptId interruptId, Calculator master, double defaultPeriod) : base(sched, interruptId, master, defaultPeriod) { /*if (master is Ti84PlusCSe) * MasterTimer = ((Ti84PlusCSe)master).Crystal;*/ //else if (master is TiSE84) }
public ApdTimer(Scheduler sched, Calculator.InterruptId interruptId, Calculator master, double period) { NextIncrement = new Scheduler.WallTimeEvent(); NextIncrement.Tag = "HW Timer tick " + interruptId.ToString(); NextIncrement.Handler = new EventHandler <Scheduler.WallTimeEvent>(DoTick); Scheduler = sched; InterruptId = interruptId; Master = master; this.period = period; Scheduler.EnqueueRelativeEvent(NextIncrement, Period); }
public void RefreshData() { double oldFreq = Calculator.Cpu.Clock.Frequency; if (oldFreq != OldFreq) { OldFreq = oldFreq; frequencyLabel.Text = Math.Round(OldFreq / 1000000, 3).ToString() + " MHz"; } execTimeLabel.Text = Math.Round(Master.AverageDeltaT * 1000, 3) + " ms (relative to " + Math.Round(Master.ExecutionQuantum * 1000, 0) + " ms nominal)" + ((int)(Master.ExecutionSpeed * 100) != 100 ? " (scaled with speed)" : ""); Calculator.InterruptId oldInts = Calculator.Interrupts; if (oldInts != OldInts) { OldInts = oldInts; intsLabel.Text = OldInts.ToString(); } }
public ApdTimer(Scheduler sched, Calculator.InterruptId interruptId, Calculator master) : this(sched, interruptId, master, 0.002) { }