Beispiel #1
0
        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);
        }
Beispiel #2
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);
        }