diff --git a/src/PortRead_PCA9655E.cpp b/src/PortRead_PCA9655E.cpp index 9d4ddeb..cb210b6 100644 --- a/src/PortRead_PCA9655E.cpp +++ b/src/PortRead_PCA9655E.cpp @@ -1,17 +1,9 @@ #include "PortRead_PCA9655E.h" -/* -configures column port's configuration, input, and pins. -*/ -PortRead_PCA9655E::PortRead_PCA9655E (PortIOE& port, const uint8_t readPins) - : port(port), readPins(readPins), - configurationByteCommand(port.num + 6), inputByteCommand(port.num) -{} - void PortRead_PCA9655E::begin() { Wire.beginTransmission(port.DEVICE_ADDR); - Wire.write(configurationByteCommand); + Wire.write(port.num + 6); //configuration byte command Wire.write(readPins); //0=configure as output (for LED), 1=configure as input (for read) Wire.endTransmission(); } @@ -22,10 +14,10 @@ returns port value uint8_t PortRead_PCA9655E::read() { Wire.beginTransmission(port.DEVICE_ADDR); - Wire.write(inputByteCommand); //input immediately before requestFrom + Wire.write(port.num); //input byte command Wire.endTransmission(false); //PCA9655E needs false to send a restart - Wire.requestFrom(port.DEVICE_ADDR, 1u); //request one byte from input port + Wire.requestFrom(port.DEVICE_ADDR, 1u); //request one byte from input port return Wire.read(); } diff --git a/src/PortRead_PCA9655E.h b/src/PortRead_PCA9655E.h index b35eb82..836a680 100644 --- a/src/PortRead_PCA9655E.h +++ b/src/PortRead_PCA9655E.h @@ -30,11 +30,9 @@ class PortRead_PCA9655E : public PortReadInterface private: PortIOE& port; const uint8_t readPins; //bitwise pin configuration, 1 means read pin - const uint8_t configurationByteCommand; - const uint8_t inputByteCommand; public: - //The constructor initialization list is in .cpp - PortRead_PCA9655E(PortIOE& port, const uint8_t readPins); + PortRead_PCA9655E (PortIOE& port, const uint8_t readPins) + : port(port), readPins(readPins) {} void begin(); virtual uint8_t read(); }; diff --git a/src/PortWrite_MCP23S17.h b/src/PortWrite_MCP23S17.h index 1e7c973..e09e2f9 100644 --- a/src/PortWrite_MCP23S17.h +++ b/src/PortWrite_MCP23S17.h @@ -31,6 +31,8 @@ Diode orientation is explained in keybrd_library_user_guide.md > Diode orientati MCP23S17 data sheet ---------------- http://www.onsemi.com/pub_link/Collateral/MCP23S17-D.PDF + +WARNING: This class hardcodes Slave Select to Arduino Pin 10 to avoid the speed penalty of digitalWrite */ class PortWrite_MCP23S17 : public PortWriteInterface diff --git a/src/PortWrite_PCA9655E.cpp b/src/PortWrite_PCA9655E.cpp index 2e1677f..4ed9aef 100644 --- a/src/PortWrite_PCA9655E.cpp +++ b/src/PortWrite_PCA9655E.cpp @@ -1,11 +1,5 @@ #include "PortWrite_PCA9655E.h" -/* -configures column port's configuration and output. -*/ -PortWrite_PCA9655E::PortWrite_PCA9655E(PortIOE& port) - : port(port), configurationByteCommand(port.num + 6), outputByteCommand(port.num + 2) {} - /* If PortRead_PCA9655E is instantiated on the same port, do NOT use PortWrite_PCA9655E::begin(). Otherwise readPins could be overwritten. @@ -13,7 +7,7 @@ Otherwise readPins could be overwritten. void PortWrite_PCA9655E::begin() { Wire.beginTransmission(port.DEVICE_ADDR); - Wire.write(configurationByteCommand); + Wire.write(port.num + 6); //configuration byte command Wire.write(0); //0=configure as output (for strobe pins and LED) Wire.endTransmission(); } @@ -36,7 +30,7 @@ void PortWrite_PCA9655E::write(const uint8_t pin, const bool value) } Wire.beginTransmission(port.DEVICE_ADDR); - Wire.write(outputByteCommand); + Wire.write(port.num + 2); //output Byte command Wire.write(port.outputVal); Wire.endTransmission(); } diff --git a/src/PortWrite_PCA9655E.h b/src/PortWrite_PCA9655E.h index 200c3af..ce797e6 100644 --- a/src/PortWrite_PCA9655E.h +++ b/src/PortWrite_PCA9655E.h @@ -37,12 +37,8 @@ class PortWrite_PCA9655E : public PortWriteInterface { private: PortIOE& port; - const uint8_t configurationByteCommand; - const uint8_t outputByteCommand; - public: - //The constructor initialization list is in .cpp - PortWrite_PCA9655E(PortIOE& port); + PortWrite_PCA9655E(PortIOE& port) : port(port) {} void begin(); virtual void write(const uint8_t pin, const bool level);