Controll MCP23S17 as GPIO
Diff: ExioMcp23s17DigitalIn.h
- Revision:
- 9:b0e9ec45a720
- Parent:
- 4:4a8ba9d9926b
--- a/ExioMcp23s17DigitalIn.h Wed Nov 02 11:00:22 2016 +0000 +++ b/ExioMcp23s17DigitalIn.h Fri Nov 04 12:19:01 2016 +0000 @@ -13,26 +13,25 @@ class ExioMcp23s17DigitalIn { public: - ExioMcp23s17DigitalIn(ExioMcp23s17& _device, ExioPort _port, int _pin) : - device(_device), + ExioMcp23s17DigitalIn(ExioMcp23s17* _pDevice, ExioPort _port, int _pin) : + pDevice(_pDevice), port(_port), pin(_pin) { // set as input - uint8_t tmp = device.ioDirection(port); - device.ioDirection(port, tmp | (1 << pin)); - //printf("pin:%d port:%d %d\r\n", pin, port, device.ioDirection(port)); + uint8_t tmp = pDevice->ioDirection(port); + pDevice->ioDirection(port, tmp | (1 << pin)); } void mode(PinMode pull) { - uint8_t tmp = device.ioPullup(port); + uint8_t tmp = pDevice->ioPullup(port); switch (pull) { case PullUp: - device.ioPullup(port, tmp | (1 << pin)); + pDevice->ioPullup(port, tmp | (1 << pin)); break; case PullNone: - device.ioPullup(port, tmp & ~(1 << pin)); + pDevice->ioPullup(port, tmp & ~(1 << pin)); break; default: error("PinMode must be PullUp or PullNone"); @@ -41,13 +40,13 @@ int read() { - uint8_t data = device.readPort(port); + uint8_t data = pDevice->readPort(port); int bv = data & (1 << pin); return bv ? 1 : 0; } protected: - ExioMcp23s17 device; + ExioMcp23s17* pDevice; ExioPort port; int pin; };