From ad1b3b2289559143d336e2e27e2d1e748434c630 Mon Sep 17 00:00:00 2001 From: wolfv6 Date: Wed, 16 Nov 2016 08:46:40 -0700 Subject: [PATCH] add Port_MCP23S18 --- src/Port_MCP23017.h | 2 +- src/Port_MCP23018.h | 3 ++- src/Port_MCP23S17.h | 2 +- src/Port_MCP23S18.h | 31 +++++++++++++++++++++++++++++++ src/Port_PCA9655E.h | 5 +---- 5 files changed, 36 insertions(+), 7 deletions(-) create mode 100644 src/Port_MCP23S18.h diff --git a/src/Port_MCP23017.h b/src/Port_MCP23017.h index 4fbea0f..f7c199d 100644 --- a/src/Port_MCP23017.h +++ b/src/Port_MCP23017.h @@ -5,7 +5,7 @@ #include #include -/* +/* Port_MCP23017 write pins are connected to matrix Row (strobe pin) or LED. readPins are connected to matrix column to read which keys are pressed. diff --git a/src/Port_MCP23018.h b/src/Port_MCP23018.h index 91a82f9..c899584 100644 --- a/src/Port_MCP23018.h +++ b/src/Port_MCP23018.h @@ -1,7 +1,8 @@ #ifndef PORT_MCP23018_H #define PORT_MCP23018_H #include "Port_MCP23017.h" -/* + +/* Port_MCP23018 write pins are connected to matrix Row (strobe pin) or LED. readPins are connected to matrix column to read which keys are pressed. diff --git a/src/Port_MCP23S17.h b/src/Port_MCP23S17.h index 0842a50..aa9ee50 100644 --- a/src/Port_MCP23S17.h +++ b/src/Port_MCP23S17.h @@ -5,7 +5,7 @@ #include #include -/* +/* Port_MCP23S17 write pins are connected to matrix Row (strobe pin) or LED. readPins are connected to matrix column to read which keys are pressed. diff --git a/src/Port_MCP23S18.h b/src/Port_MCP23S18.h new file mode 100644 index 0000000..09f4fc9 --- /dev/null +++ b/src/Port_MCP23S18.h @@ -0,0 +1,31 @@ +#ifndef PORT_MCP23S18_H +#define PORT_MCP23S18_H +#include "Port_MCP23S17.h" + +/* Port_MCP23S18 has not been tested. +write pins are connected to matrix Row (strobe pin) or LED. +readPins are connected to matrix column to read which keys are pressed. + +Port_MCP23S18 can only be active low (Scanner_IOE::activeState = LOW). +Open-drain active high would not work because pull down resistors have no effect on sink. + https://en.wikipedia.org/wiki/Open_collector + +Use LED_PortOpenDrain class for indicator LEDs. + +Example instantiation: + const uint8_t IOE_ADDR = 0x20; //MCP23S18 address pin grounded + Port_MCP23S18 portB(IOE_ADDR, 1, 0); //all pins are set to output for strobes and LEDs + Port_MCP23S18 portA(IOE_ADDR, 0, 1<<0 | 1<<1 ); //pin 0 and pin 1 are set to input for reading, + //remaining pins can be used for LEDs +Diode orientation + ---------------- +Diode orientation is explained in keybrd_library_user_guide.md > Diode orientation +*/ + +class Port_MCP23S18 : public Port_MCP23S17 +{ + public: + Port_MCP23S18(const uint8_t deviceAddr, const uint8_t portNum, const uint8_t readPins) + : Port_MCP23S17(deviceAddr, portNum, readPins) {} +}; +#endif diff --git a/src/Port_PCA9655E.h b/src/Port_PCA9655E.h index 3630a55..ede1a9d 100644 --- a/src/Port_PCA9655E.h +++ b/src/Port_PCA9655E.h @@ -5,7 +5,7 @@ #include #include -/* +/* Port_PCA9655E write pins are connected to matrix Row (strobe pin) or LED. readPins are connected to matrix column to read which keys are pressed. @@ -29,9 +29,6 @@ Diode orientation ---------------- Diode orientation is explained in keybrd_library_user_guide.md > Diode orientation -PCA9655E data sheet - ---------------- - http://www.onsemi.com/pub_link/Collateral/PCA9655E-D.PDF */ class Port_PCA9655E : public PortInterface