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(); }
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); }