public override void Reset() { state = State.Idle; EventInterrupt.Unset(); ErrorInterrupt.Unset(); registers.Reset(); data.Reset(); }
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); }
public override void Reset() { registers.Reset(); txData = new Queue <byte>(); rxData = new Queue <byte>(); currentSlaveAddress = 0; transferOutgoing = false; EventInterrupt.Unset(); ErrorInterrupt.Unset(); masterMode = false; }
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(); }
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); }
private void Reset() { InterruptReset = true; EventInterrupt.Set(); }