diff options
Diffstat (limited to 'components')
-rw-r--r-- | components/screen/screen.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/components/screen/screen.c b/components/screen/screen.c index 99f74b0..8d29265 100644 --- a/components/screen/screen.c +++ b/components/screen/screen.c @@ -77,10 +77,12 @@ void configure_screen(struct Screen* screen) for (uint8_t i = 0; i <= 3; ++i) { - mcp_set_mode(screen->mcp, screen->nixies[i].reg, screen->nixies[i].D, MCP_GPIO_OUTPUT); - mcp_set_mode(screen->mcp, screen->nixies[i].reg, screen->nixies[i].C, MCP_GPIO_OUTPUT); - mcp_set_mode(screen->mcp, screen->nixies[i].reg, screen->nixies[i].B, MCP_GPIO_OUTPUT); - mcp_set_mode(screen->mcp, screen->nixies[i].reg, screen->nixies[i].A, MCP_GPIO_OUTPUT); + uint8_t reg = REG_IODIRA; + if (screen->nixies[i].reg != REG_GPIOA) reg = REG_GPIOB; + mcp_set_mode(screen->mcp, reg, screen->nixies[i].D, MCP_GPIO_OUTPUT); + mcp_set_mode(screen->mcp, reg, screen->nixies[i].C, MCP_GPIO_OUTPUT); + mcp_set_mode(screen->mcp, reg, screen->nixies[i].B, MCP_GPIO_OUTPUT); + mcp_set_mode(screen->mcp, reg, screen->nixies[i].A, MCP_GPIO_OUTPUT); } |