/// <summary> /// Read from sequential registers on the MCP23017 via I2C /// </summary> /// <param name="i2c">I2C Interface, probabally the Bus Pirate</param> /// <param name="register">Base Register Address</param> /// <returns>Values Read</returns> private byte[] ReadRegisters(I2CInterface i2c, Register register, uint registerstoread) { //Set address pointer byte opcode = (byte)(((this.Address % 8) << 1) | 0x40); byte[] data = { opcode, (byte)register }; i2c.WriteThenRead(data, 0); //Read data opcode = (byte)(((this.Address % 8) << 1) | 0x41); return(i2c.WriteThenRead(new byte[] { opcode }, registerstoread)); }
/// <summary> /// Write to a register on the MCP23017 via I2C /// </summary> /// <param name="i2c">I2C Interface, probabally the Bus Pirate</param> /// <param name="register">Register Address</param> /// <param name="value">Value to write</param> private void WriteRegister(I2CInterface i2c, Register register, byte value) { byte opcode = (byte)(((this.Address % 8) << 1) | 0x40); byte[] data = { opcode, (byte)register, value }; i2c.WriteThenRead(data, 0); }
/// <summary> /// Write to sequential registers on the MCP23017 via I2C /// </summary> /// <param name="i2c">I2C Interface, probabally the Bus Pirate</param> /// <param name="register">Base Register Address</param> /// <param name="value">Value to write</param> private void WriteRegisters(I2CInterface i2c, Register register, byte[] values) { byte opcode = (byte)(((this.Address % 8) << 1) | 0x40); List <byte> data = new List <byte> { opcode, (byte)register }; data.AddRange(values); i2c.WriteThenRead(data.ToArray(), 0); }
/// <summary> /// Write to sequential registers on the MCP23017 via I2C /// </summary> /// <param name="i2c">I2C Interface, probabally the Bus Pirate</param> /// <param name="register">Base Register Address</param> /// <param name="value">Value to write</param> private void WriteRegisters(I2CInterface i2c, Register register, byte[] values) { byte opcode = (byte)(((this.Address % 8) << 1) | 0x40); List<byte> data = new List<byte> { opcode, (byte)register }; data.AddRange(values); i2c.WriteThenRead(data.ToArray(), 0); }
/// <summary> /// Read from sequential registers on the MCP23017 via I2C /// </summary> /// <param name="i2c">I2C Interface, probabally the Bus Pirate</param> /// <param name="register">Base Register Address</param> /// <returns>Values Read</returns> private byte[] ReadRegisters(I2CInterface i2c, Register register, uint registerstoread) { //Set address pointer byte opcode = (byte)(((this.Address % 8) << 1) | 0x40); byte[] data = { opcode, (byte)register }; i2c.WriteThenRead(data, 0); //Read data opcode = (byte)(((this.Address % 8) << 1) | 0x41); return i2c.WriteThenRead(new byte[] {opcode}, registerstoread); }