Skip to content

Commit

Permalink
Fix #36, document bug
Browse files Browse the repository at this point in the history
  • Loading branch information
RobTillaart committed Jul 4, 2024
1 parent 81cfd4e commit 986d4ec
Show file tree
Hide file tree
Showing 6 changed files with 33 additions and 20 deletions.
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/)
and this project adheres to [Semantic Versioning](http://semver.org/).


## [0.7.1] 2024-06-06
- Fix #36, documentation bug.

## [0.7.0] 2024-06-06
- fix #33 bug, kudos to JelleWilbrink

Expand Down
23 changes: 13 additions & 10 deletions MCP23017.cpp
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
//
// FILE: MCP23017.cpp
// AUTHOR: Rob Tillaart
// VERSION: 0.7.0
// VERSION: 0.7.1
// PURPOSE: Arduino library for I2C MCP23017 16 channel port expander
// DATE: 2019-10-12
// URL: https://github.com/RobTillaart/MCP23017_RT
Expand Down Expand Up @@ -66,6 +66,7 @@ uint8_t MCP23017::getAddress()
//
// pin = 0..15
// mode = INPUT, OUTPUT, INPUT_PULLUP (= same as INPUT)
// do NOT use 0 or 1 for mode.
bool MCP23017::pinMode1(uint8_t pin, uint8_t mode)
{
if (pin > 15)
Expand Down Expand Up @@ -309,17 +310,18 @@ bool MCP23017::getPullup(uint8_t pin, bool &pullup)
// 8 pins interface
//
// whole register at once
// port = 0..1
// value = 0..0xFF bit pattern
bool MCP23017::pinMode8(uint8_t port, uint8_t value)
// port = 0..1
// mask = 0x00..0xFF bit pattern
// bit 0 = output mode, bit 1 = input mode
bool MCP23017::pinMode8(uint8_t port, uint8_t mask)
{
if (port > 1)
{
_error = MCP23017_PORT_ERROR;
return false;
}
if (port == 0) writeReg(MCP23x17_DDR_A, value);
if (port == 1) writeReg(MCP23x17_DDR_B, value);
if (port == 0) writeReg(MCP23x17_DDR_A, mask);
if (port == 1) writeReg(MCP23x17_DDR_B, mask);
_error = MCP23017_OK;
return true;
}
Expand Down Expand Up @@ -429,11 +431,12 @@ bool MCP23017::getPullup8(uint8_t port, uint8_t &mask)
//
// 16 pins interface
//
// two register at once
// value = 0x0000..0xFFFF bit pattern
bool MCP23017::pinMode16(uint16_t value)
// two registers at once
// mask = 0x0000..0xFFFF bit pattern
// bit 0 = output mode, bit 1 = input mode
bool MCP23017::pinMode16(uint16_t mask)
{
writeReg16(MCP23x17_DDR_A, value);
writeReg16(MCP23x17_DDR_A, mask);
_error = MCP23017_OK;
return true;
}
Expand Down
19 changes: 12 additions & 7 deletions MCP23017.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
//
// FILE: MCP23017.h
// AUTHOR: Rob Tillaart
// VERSION: 0.7.0
// VERSION: 0.7.1
// PURPOSE: Arduino library for I2C MCP23017 16 channel port expander
// DATE: 2019-10-12
// URL: https://github.com/RobTillaart/MCP23017_RT
Expand All @@ -15,7 +15,7 @@
#include "MCP23x17_registers.h"


#define MCP23017_LIB_VERSION (F("0.7.0"))
#define MCP23017_LIB_VERSION (F("0.7.1"))

#define MCP23017_OK 0x00
#define MCP23017_PIN_ERROR 0x81
Expand All @@ -37,7 +37,8 @@ class MCP23017


// single pin interface
// mode: 0 = OUTPUT, 1 = INPUT, 1 = INPUT_PULLUP (==INPUT)
// mode = INPUT, OUTPUT, INPUT_PULLUP (= same as INPUT)
// do not use 0, 1 for mode.
bool pinMode1(uint8_t pin, uint8_t mode);
bool write1(uint8_t pin, uint8_t value);
uint8_t read1(uint8_t pin);
Expand All @@ -50,8 +51,10 @@ class MCP23017

// 8 pins interface
// port = 0..1
// value = bit pattern
bool pinMode8(uint8_t port, uint8_t value);
// mask = 0x00..0xFF bit pattern,
// bit 0 = output mode, bit 1 = input mode
// value = bit pattern.
bool pinMode8(uint8_t port, uint8_t mask);
bool write8(uint8_t port, uint8_t value);
int read8(uint8_t port);

Expand All @@ -62,8 +65,10 @@ class MCP23017


// 16 pins interface
// value = bit pattern
bool pinMode16(uint16_t value);
// mask = 0x0000..0xFFFF bit pattern
// bit 0 = output mode, bit 1 = input mode
// value = bit pattern.
bool pinMode16(uint16_t mask);
bool write16(uint16_t value);
uint16_t read16();

Expand Down
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,9 @@ Returns false if not connected or a register could not be set.

Please note REVD remarks at top.

- **bool pinMode1(uint8_t pin, uint8_t mode)** pin = 0..15, mode = INPUT, OUTPUT. Returns true if successful.
- **bool pinMode1(uint8_t pin, uint8_t mode)** pin = 0..15, mode = INPUT, OUTPUT or INPUT_PULLUP.
Do NOT use 0, 1 for mode as the 3 constants are (possibly) defined differently.
Returns true if successful.
- **bool write1(uint8_t pin, uint8_t value)** pin = 0..15, value = LOW(0) HIGH (!0). Returns true if successful.
- **uint8_t read1(uint8_t pin)** pin = 0..15, returns LOW or HIGH, might set the lastError();
- **bool setPolarity(uint8_t pin, bool reversed)** pin = 0..15, set reversed flag. Returns true if successful.
Expand Down
2 changes: 1 addition & 1 deletion library.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
"type": "git",
"url": "https://github.com/RobTillaart/MCP23017_RT.git"
},
"version": "0.7.0",
"version": "0.7.1",
"license": "MIT",
"frameworks": "*",
"platforms": "*",
Expand Down
2 changes: 1 addition & 1 deletion library.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name=MCP23017_RT
version=0.7.0
version=0.7.1
author=Rob Tillaart <[email protected]>
maintainer=Rob Tillaart <[email protected]>
sentence=Arduino library for I2C MCP23017 16 channel port expander 16 IO-lines
Expand Down

0 comments on commit 986d4ec

Please sign in to comment.