private I2cDeviceRegister OLAT; //Pin latches register /// <summary> /// Creates a mcp23008 port expander /// </summary> /// <param name="slaveAddress">i2c address of the chip.</param> /// <returns></returns> public async static Task<Mcp230xx> CreateMcp23008(int slaveAddress, int interruptPin = -1) { var device = await GetDevice(slaveAddress); var iPin = interruptPin == -1 ? null : GenericGpioController.GetDefault().OpenPin(interruptPin); var expander = new Mcp230xx(device, 0x00, 0x01, iPin); expander.InterruptActiveValue = GpioPinValue.High; return expander; }
/// <summary> /// Creates a new mcp23017 port expander /// </summary> /// <param name="slaveAddress">i2c address of the chip.</param> /// <returns></returns> public async static Task<Mcp230xx[]> CreateMcp23017(int slaveAddress, int interruptPin = -1) { var registerAddresses = new byte[] { 0x00, 0x01 }; var expanders = new Mcp230xx[2]; var device = await GetDevice(slaveAddress); var iPin = interruptPin == -1 ? null : GenericGpioController.GetDefault().OpenPin(interruptPin); for (var i = 0; i < registerAddresses.Length; i++) { var expander = new Mcp230xx(device, registerAddresses[i], 0x02, iPin); expander.InterruptMirrorEnabled = true; expander.InterruptActiveValue = GpioPinValue.Low; expanders[i] = expander; } return expanders; }