Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        //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)
        }
Ejemplo n.º 3
0
 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);
 }
Ejemplo n.º 4
0
        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();
            }
        }
Ejemplo n.º 5
0
 public ApdTimer(Scheduler sched, Calculator.InterruptId interruptId, Calculator master) : this(sched, interruptId, master, 0.002)
 {
 }