public bool SendDeviceAddrAndCheckACK(byte address, bool read) { // Address address <<= 1; if (read) { address |= 0x01; } _mpsse.Enqueue(MpsseCommand.BytesOutOnMinusEdgeWithMsbFirst(new[] { address })); // Put line back to idle (data released, clock pulled low) _mpsse.AdBusValue.SetBit(1).UnsetBit(0); _mpsse.AdBusDirection.SetBit(1).SetBit(1); _mpsse.Enqueue(MpsseCommand.SetDataBitsLowByte(_mpsse.AdBusValue, _mpsse.AdBusDirection)); // CLOCK IN ACK _mpsse.Enqueue(MpsseCommand.BitsInOnPlusEdgeWithMsbFirst(1)); // Send off the commands _mpsse.Enqueue(MpsseCommand.SendImmediate()); // Execute _mpsse.ExecuteBuffer(); // Result var ack = _mpsse.read(1); return((ack[0] & 0x01) == 0); }
public bool SendBytes(byte[] DataByteToSend) { // clock data byte out _mpsse.Enqueue(MpsseCommand.BytesOutOnMinusEdgeWithMsbFirst(DataByteToSend)); // Put line back to idle (data released, clock pulled low) _mpsse.AdBusValue.SetBit(1).UnsetBit(0); _mpsse.AdBusDirection.SetBit(1).SetBit(1); _mpsse.Enqueue(MpsseCommand.SetDataBitsLowByte(_mpsse.AdBusValue, _mpsse.AdBusDirection)); // CLOCK IN ACK _mpsse.Enqueue(MpsseCommand.BitsInOnPlusEdgeWithMsbFirst(1)); // Send off the commands _mpsse.Enqueue(MpsseCommand.SendImmediate()); // Execute _mpsse.ExecuteBuffer(); // Result var ack = _mpsse.read(1); return((ack[0] & 0x01) == 0); }