Skip to content

Commit b09701f

Browse files
author
James Wilson
committed
Open drain output option for IO expander interrupt
1 parent 30c18c6 commit b09701f

File tree

3 files changed

+15
-1
lines changed

3 files changed

+15
-1
lines changed

hal/inc/hal_platform.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -354,6 +354,9 @@
354354
# ifndef HAL_PLATFORM_MCP23S17_MIRROR_INTERRUPTS
355355
# define HAL_PLATFORM_MCP23S17_MIRROR_INTERRUPTS (0)
356356
# endif // HAL_PLATFORM_MCP23S17_MIRROR_INTERRUPTS
357+
# ifndef HAL_PLATFORM_MCP23S17_OPEN_DRAIN_INT
358+
# define HAL_PLATFORM_MCP23S17_OPEN_DRAIN_INT (0)
359+
# endif // HAL_PLATFORM_MCP23S17_OPEN_DRAIN_INT
357360
#endif /* HAL_PLATFORM_MCP23S17 */
358361

359362
#ifndef HAL_PLATFORM_DEMUX

hal/shared/mcp23s17.cpp

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,9 +135,19 @@ int Mcp23s17::reset(bool verify) {
135135
hal_gpio_write(IOE_RST, 1);
136136
HAL_Delay_Milliseconds(10);
137137

138+
#if HAL_PLATFORM_MCP23S17_MIRROR_INTERRUPTS || HAL_PLATFORM_MCP23S17_OPEN_DRAIN_INT
139+
uint8_t iocon {};
140+
138141
#if HAL_PLATFORM_MCP23S17_MIRROR_INTERRUPTS
139-
CHECK(writeRegister(IOCON_ADDR[0], 1u << 6));
142+
iocon |= 1u << 6;
143+
#endif
144+
#if HAL_PLATFORM_MCP23S17_OPEN_DRAIN_INT
145+
iocon |= 1u << 2;
140146
#endif
147+
148+
CHECK(writeRegister(IOCON_ADDR[0], iocon));
149+
#endif
150+
141151
if (verify) {
142152
uint8_t tmp[22] = {0x00};
143153
CHECK(readContinuousRegisters(IODIR_ADDR[0], tmp, sizeof(tmp)));

hal/src/trackerm/hal_platform_config.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
#define HAL_PLATFORM_MCP23S17_SPI (HAL_SPI_INTERFACE1)
3535
#define HAL_PLATFORM_MCP23S17_SPI_CLOCK (16000000)
3636
#define HAL_PLATFORM_MCP23S17_MIRROR_INTERRUPTS (1)
37+
#define HAL_PLATFORM_MCP23S17_OPEN_DRAIN_INT (1)
3738
#define HAL_PLATFORM_DEMUX (1)
3839

3940
#if defined(MODULE_FUNCTION) && MODULE_FUNCTION != 2 // MOD_FUNC_BOOTLOADER

0 commit comments

Comments
 (0)