Esempio n. 1
0
        public override void RobotInit()
        {
            absoluteTach   = new Tachometer(di);
            quadratureTach = new Tachometer(quadDI);
            quadratureTach.EdgesPerRevolution = 2048;
            quadratureCounter                     = new UpDownCounter();
            quadratureCounter.UpSource            = quadDI;
            quadratureCounter.UpEdgeConfiguration = EdgeConfiguration.kRisingEdge;

            externalDirectionCounter = new ExternalDirectionCounter(quadDI, quadDIB);

            externalDirectionCounter2x = new ExternalDirectionCounter(quadDI, quadDIB);
            externalDirectionCounter2x.EdgeConfiguration = EdgeConfiguration.kBothEdges;
            externalDirectionCounter2x.ReverseDirection  = true;

            DigitalGlitchFilter filter = new DigitalGlitchFilter();

            filter.SetPeriod(TimeSpan.FromSeconds(1));
            //filter.Add(di);

            interrupt = new AsynchronousInterrupt(di, (r, f) =>
            {
                Console.WriteLine("Interrupt Occured " + count);
                count++;
                //Thread.Sleep(20);
            });

            interrupt.SetInterruptEdges(true, false);

            interrupt.Enable();
        }
Esempio n. 2
0
        public DutyCycleEncoder(DutyCycle dutyCycle)
        {
            m_dutyCycle     = dutyCycle;
            m_analogTrigger = new AnalogTrigger(m_dutyCycle);
            m_counter       = new UpDownCounter();

            m_simDevice = SimDevice.Create("DutyCycleEncoder", m_dutyCycle.FPGAIndex);

            if (m_simDevice)
            {
            }

            m_analogTrigger.SetLimitsDutyCycle(0.25, 0.75);
            m_counter.UpSource   = m_analogTrigger.CreateOutput(AnalogTriggerType.kRisingPulse);
            m_counter.DownSource = m_analogTrigger.CreateOutput(AnalogTriggerType.kFallingPulse);

            SendableRegistry.Instance.AddLW(this, "DutyCycle Encoder", m_dutyCycle.SourceChannel);
        }