예제 #1
0
        public void RisingClockShouldGivePositiveEdge()
        {
            // Arrange
            VoltageEdge edge = VoltageEdge.Negative;

            eeprom.CLK.Value       = false;
            eeprom.CLK.EdgeChange += (sender, args) => { edge = args.Edge; };

            // Act
            eeprom.CLK.Value = true;

            // Assert
            Assert.AreEqual <VoltageEdge>(VoltageEdge.Positive, edge, "Rising clock value should give positive edge.");
        }
예제 #2
0
        public void Update(bool chipSelect, bool clock)         //, bool dataIn)
        {
            CS        = chipSelect;
            CLK.Value = clock;
            //DI = dataIn;

            if (!CS)
            {
                State = OperationState.Standby;
            }

            // Debug.WriteLine("{0},{1},{2},{3},{4},{5}", CS, CLK.Value, DI, DO, CurrentEdge, State);

            switch (State)
            {
            case OperationState.Standby:
                if (IsStartConditionMet)
                {
                    OnStart();
                }
                break;

            case OperationState.Clocking:
                ClockInstruction(DI);
                break;

            case OperationState.Executing:
                ExecuteInstruction();
                break;

            default:
                break;
            }

            CurrentEdge = VoltageEdge.None;
        }
예제 #3
0
 public EdgeChangedEventArgs(VoltageEdge edge)
 {
     this.Edge = edge;
 }
예제 #4
0
 // Event handlers
 private void OnEdgeChange(object sender, EdgeChangedEventArgs e)
 {
     CurrentEdge = e.Edge;
 }