Ejemplo n.º 1
0
        public override void Reset()
        {
            state = State.Idle;
            EventInterrupt.Unset();
            ErrorInterrupt.Unset();

            registers.Reset();
            data.Reset();
        }
Ejemplo n.º 2
0
        private void Update()
        {
            var value = (transferCompleteInterruptEnabled.Value && (transferCompleteReload.Value || transferComplete.Value)) ||
                        (transferInterruptEnabled.Value && transmitInterruptStatus.Value) ||
                        (receiveInterruptEnabled.Value && isReadTransfer.Value && dataPacket.Count > 0) || //RXNE is calculated dynamically
                        (stopDetectionInterruptEnabled.Value && stopDetection.Value) ||
                        (nackReceivedInterruptEnabled.Value && false); //TODO: implement NACKF

            EventInterrupt.Set(value);
        }
Ejemplo n.º 3
0
 public override void Reset()
 {
     registers.Reset();
     txData = new Queue <byte>();
     rxData = new Queue <byte>();
     currentSlaveAddress = 0;
     transferOutgoing    = false;
     EventInterrupt.Unset();
     ErrorInterrupt.Unset();
     masterMode = false;
 }
Ejemplo n.º 4
0
        private void TimerThread()
        {
            Running = true;
            DateTime?nextTime = null;

            while (true)
            {
                if (!Running || EventInterrupt.SafeWaitHandle.IsClosed)
                {
                    break;
                }
                if (nextTime == null)
                {
                    Timeout next = List.First();
                    if (next == null)
                    {
                        EventInterrupt.WaitOne();
                    }
                    else
                    {
                        nextTime = DateTime.Now.AddMilliseconds(next.TimeoutDuration);
                    }
                }
                if (nextTime != null)
                {
                    TimeSpan timeout = nextTime.Value - DateTime.Now;
                    EventInterrupt.WaitOne(timeout > TimeSpan.Zero ? timeout : TimeSpan.Zero);
                    if (InterruptReset)
                    {
                        InterruptReset = false;
                        EventInterrupt.Reset();
                        nextTime = null;
                        continue;
                    }
                    List.ExecuteFirst();
                    nextTime = null;
                }
            }
            Running = false;
            EventInterrupt.Dispose();
        }
Ejemplo n.º 5
0
 private void Update()
 {
     EventInterrupt.Set(eventInterruptEnable.Value && (startBit.Value || addressSentOrMatched.Value || byteTransferFinished.Value ||
                                                       (bufferInterruptEnable.Value && (dataRegisterEmpty.Value || dataRegisterNotEmpty.Value))));
     ErrorInterrupt.Set(errorInterruptEnable.Value && acknowledgeFailed.Value);
 }
Ejemplo n.º 6
0
 private void Reset()
 {
     InterruptReset = true;
     EventInterrupt.Set();
 }