Hi there,
I have configured a MCP23008 expander as Digital Input and i have the following errors.
java.io.IOException: Error reading from /dev/i2c-1 at address 0x21 to address 0x7. Got -30001.
at com.pi4j.io.i2c.impl.I2CDeviceImpl.read(I2CDeviceImpl.java:221)
at com.pi4j.gpio.extension.mcp.MCP23008GpioProvider$GpioStateMonitor.run(MCP23008GpioProvider.java:314)
java.io.IOException: Error reading from /dev/i2c-1 at address 0x21 to address 0x7. Got -30001.
at com.pi4j.io.i2c.impl.I2CDeviceImpl.read(I2CDeviceImpl.java:221)
at com.pi4j.gpio.extension.mcp.MCP23008GpioProvider$GpioStateMonitor.run(MCP23008GpioProvider.java:314)
java.io.IOException: Error reading from /dev/i2c-1 at address 0x21 to address 0x9. Got -20001.
at com.pi4j.io.i2c.impl.I2CDeviceImpl.read(I2CDeviceImpl.java:221)
at com.pi4j.gpio.extension.mcp.MCP23008GpioProvider$GpioStateMonitor.run(MCP23008GpioProvider.java:319)
java.io.IOException: Error reading from /dev/i2c-1 at address 0x21 to address 0x7. Got -30001.
at com.pi4j.io.i2c.impl.I2CDeviceImpl.read(I2CDeviceImpl.java:221)
at com.pi4j.gpio.extension.mcp.MCP23008GpioProvider$GpioStateMonitor.run(MCP23008GpioProvider.java:314)
java.io.IOException: Error reading from /dev/i2c-1 at address 0x21 to address 0x7. Got -20001.
at com.pi4j.io.i2c.impl.I2CDeviceImpl.read(I2CDeviceImpl.java:221)
at com.pi4j.gpio.extension.mcp.MCP23008GpioProvider$GpioStateMonitor.run(MCP23008GpioProvider.java:314)
java.io.IOException: Error reading from /dev/i2c-1 at address 0x21 to address 0x7. Got -30001.
at com.pi4j.io.i2c.impl.I2CDeviceImpl.read(I2CDeviceImpl.java:221)
at com.pi4j.gpio.extension.mcp.MCP23008GpioProvider$GpioStateMonitor.run(MCP23008GpioProvider.java:314)
java.io.IOException: Error reading from /dev/i2c-1 at address 0x21 to address 0x7. Got -20001.
at com.pi4j.io.i2c.impl.I2CDeviceImpl.read(I2CDeviceImpl.java:221)
at com.pi4j.gpio.extension.mcp.MCP23008GpioProvider$GpioStateMonitor.run(MCP23008GpioProvider.java:314)
java.io.IOException: Error reading from /dev/i2c-1 at address 0x21 to address 0x7. Got -30001.
at com.pi4j.io.i2c.impl.I2CDeviceImpl.read(I2CDeviceImpl.java:221)
at com.pi4j.gpio.extension.mcp.MCP23008GpioProvider$GpioStateMonitor.run(MCP23008GpioProvider.java:314)
java.io.IOException: Error reading from /dev/i2c-1 at address 0x21 to address 0x7. Got -20001.
at com.pi4j.io.i2c.impl.I2CDeviceImpl.read(I2CDeviceImpl.java:221)
at com.pi4j.gpio.extension.mcp.MCP23008GpioProvider$GpioStateMonitor.run(MCP23008GpioProvider.java:314)
java.io.IOException: Error reading from /dev/i2c-1 at address 0x21 to address 0x7. Got -30001.
at com.pi4j.io.i2c.impl.I2CDeviceImpl.read(I2CDeviceImpl.java:221)
at com.pi4j.gpio.extension.mcp.MCP23008GpioProvider$GpioStateMonitor.run(MCP23008GpioProvider.java:314)
MCP23008 has RESET pin tied to VCC, A0 pin tied to VCC and A1 and A2 pin tied to GND.
My code is the following :
public static void testMCP23008WithotGPIOController(I2CBus bus) throws IOException, InterruptedException {
int addressInput = 0x21;
MCP23008GpioProvider mcpInput = new MCP23008GpioProvider(bus,addressInput);
for (Pin pin : MCP23008Pin.ALL){
System.out.println(mcpInput.getMode(pin).getValue());
Thread.sleep(500);
}
}
And it's acting strange ! The procedure ends, it's reading the pins but the main method doesn't end, it's throwing the exceptions from above.
And the strangest part is that if i add something else before reading input pins, it is also throwing exceptions.
Example:
public static void testMCP23008WithotGPIOController(I2CBus bus) throws IOException, InterruptedException {
int addressRelays = 0x20;
int addressInput = 0x21;
MCP23008GpioProvider mcpRelays = new MCP23008GpioProvider(bus,addressRelays);
MCP23008GpioProvider mcpInput = new MCP23008GpioProvider(bus,addressInput);
for (Pin pin : MCP23008Pin.ALL){
mcpRelays.setMode(pin, PinMode.DIGITAL_OUTPUT);
}
for (Pin pin : MCP23008Pin.ALL){
mcpInput.setMode(pin, PinMode.DIGITAL_INPUT);
}
for (Pin pin : MCP23008Pin.ALL){
mcpRelays.setState(pin, PinState.HIGH);
Thread.sleep(500);
}
for (Pin pin : MCP23008Pin.ALL){
mcpRelays.setState(pin, PinState.LOW);
Thread.sleep(500);
}
for (Pin pin : MCP23008Pin.ALL){
System.out.println(mcpInput.getMode(pin).getValue());
Thread.sleep(500);
}
}
Even if the procedure is at 3rd or 4th for, it's showing me the same error for device 0x21 but i am not working with it yet.
Can someone help me with this ?