Class MCP23017
- java.lang.Object
-
- com.diozero.internal.spi.AbstractDeviceFactory
-
- com.diozero.devices.mcp23xxx.MCP23xxx
-
- com.diozero.devices.mcp23xxx.MCP23x17
-
- com.diozero.devices.MCP23017
-
- All Implemented Interfaces:
DeviceInterface
,DeviceEventConsumer<DigitalInputEvent>
,GpioExpander
,DeviceFactoryInterface
,GpioDeviceFactoryInterface
,PwmOutputDeviceFactoryInterface
,AutoCloseable
,Consumer<DigitalInputEvent>
public class MCP23017 extends MCP23x17
Datasheet: http://ww1.microchip.com/downloads/en/DeviceDoc/21952b.pdf.The MCP23X17 consists of multiple 8-bit configuration registers for input, output and polarity selection. The system master can enable the I/Os as either inputs or outputs by writing the I/O configuration bits (IODIRA/B). The data for each input or output is kept in the corresponding input or output register. The polarity of the Input Port register can be inverted with the Polarity Inversion register. All registers can be read by the system master.
The 16-bit I/O port functionally consists of two 8-bit ports (PORTA and PORTB). The MCP23X17 can be configured to operate in the 8-bit or 16-bit modes via IOCON.BANK.
There are two interrupt GPIOs, INTA and INTB, that can be associated with their respective ports, or can be logically OR'ed together so that both GPIOs will activate if either port causes an interrupt. A special mode (Byte mode with IOCON.BANK = 0) causes the address pointer to toggle between associated A/B register pairs. For example, if the BANK bit is cleared and the Address Pointer is initially set to address 12h (GPIOA) or 13h (GPIOB), the pointer will toggle between GPIOA and GPIOB. Note that the Address Pointer can initially point to either address in the register pair.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class com.diozero.devices.mcp23xxx.MCP23x17
MCP23x17.MCP23x17BoardPinInfo
-
-
Field Summary
Fields Modifier and Type Field Description static int
DEVICE_ADDRESS
-
Fields inherited from class com.diozero.devices.mcp23xxx.MCP23xxx
INTERRUPT_GPIO_NOT_SET
-
Fields inherited from class com.diozero.internal.spi.AbstractDeviceFactory
closed, deviceStates
-
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
close()
Close this device factory including all devices that have been provisioned by it.protected byte
readByte(int register)
protected void
writeByte(int register, byte value)
-
Methods inherited from class com.diozero.devices.mcp23xxx.MCP23x17
getBoardPinInfo, getDefValReg, getGPIntEnReg, getGPIOReg, getGPPullUpReg, getIntCapReg, getIntConReg, getIntFReg, getIOConReg, getIODirReg, getIPolReg, getOLatReg
-
Methods inherited from class com.diozero.devices.mcp23xxx.MCP23xxx
accept, closeGpio, createDigitalInputDevice, createDigitalInputOutputDevice, createDigitalOutputDevice, createPwmOutputDevice, getBoardPwmFrequency, getName, getValue, getValues, initialise, setBoardPwmFrequency, setDirections, setInputMode, setOutputMode, setValue, setValues
-
Methods inherited from class com.diozero.internal.spi.AbstractDeviceFactory
createI2CKey, createPinKey, createSerialKey, createSpiKey, deviceClosed, deviceOpened, getDevice, isClosed, isDeviceOpened, reopen
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface com.diozero.internal.spi.DeviceFactoryInterface
createI2CKey, createPinKey, createSerialKey, createSpiKey, deviceClosed, deviceOpened, getDevice, isClosed, isDeviceOpened, reopen, start
-
Methods inherited from interface com.diozero.internal.spi.GpioDeviceFactoryInterface
provisionDigitalInputDevice, provisionDigitalInputOutputDevice, provisionDigitalOutputDevice
-
Methods inherited from interface com.diozero.internal.spi.PwmOutputDeviceFactoryInterface
provisionPwmOutputDevice
-
-
-
-
Field Detail
-
DEVICE_ADDRESS
public static final int DEVICE_ADDRESS
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
MCP23017
public MCP23017() throws RuntimeIOException
- Throws:
RuntimeIOException
-
MCP23017
public MCP23017(int interruptGpio) throws RuntimeIOException
- Throws:
RuntimeIOException
-
MCP23017
public MCP23017(int interruptGpioA, int interruptGpioB) throws RuntimeIOException
- Throws:
RuntimeIOException
-
MCP23017
public MCP23017(int controller, int address, int interruptGpio) throws RuntimeIOException
- Throws:
RuntimeIOException
-
MCP23017
public MCP23017(int controller, int address, int interruptGpioA, int interruptGpioB) throws RuntimeIOException
- Throws:
RuntimeIOException
-
-
Method Detail
-
close
public void close() throws RuntimeIOException
Description copied from interface:DeviceFactoryInterface
Close this device factory including all devices that have been provisioned by it.- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceDeviceFactoryInterface
- Specified by:
close
in interfaceDeviceInterface
- Specified by:
close
in interfaceGpioExpander
- Overrides:
close
in classMCP23xxx
- Throws:
RuntimeIOException
-
-