Browse Source

small correction for MCP23017 that now works!

Philippe G 3 years ago
parent
commit
16ba8e9e1f
2 changed files with 10 additions and 10 deletions
  1. 3 3
      components/services/gpio_exp.c
  2. 7 7
      components/services/services.c

+ 3 - 3
components/services/gpio_exp.c

@@ -187,7 +187,7 @@ gpio_exp_t* gpio_exp_create(const gpio_exp_config_t *config) {
 		gpio_intr_enable(config->intr);						
 	}
 	
-	ESP_LOGI(TAG, "Create GPIO expander at base %u with INT %u at @%x on port %d", config->base, config->intr, config->phy.addr, config->phy.port);
+	ESP_LOGI(TAG, "Create GPIO expander %s at base %u with INT %u at @%x on port %d", config->model, config->base, config->intr, config->phy.addr, config->phy.port);
 	return expander;
 }
 
@@ -241,7 +241,7 @@ esp_err_t gpio_exp_set_direction(int gpio, gpio_mode_t mode, gpio_exp_t *expande
 		ESP_LOGE(TAG, "GPIO %d on expander base %u can't be r/w", gpio, expander->first);
 		return ESP_ERR_INVALID_ARG;
 	}
-	
+
 	// most expanders want unconfigured GPIO to be set to output
 	if (expander->model->set_direction) expander->model->set_direction(expander);
 
@@ -382,7 +382,7 @@ static gpio_exp_t* find_expander(gpio_exp_t *expander, int *gpio) {
 	}
 	
 	// normalize GPIO number
-	if (expander && *gpio >= expanders->first) *gpio -= expanders->first;
+	if (expander && *gpio >= expander->first) *gpio -= expander->first;
 	
 	return expander;
 }

+ 7 - 7
components/services/services.c

@@ -70,13 +70,6 @@ void services_init(void) {
 	}
 #endif
 
-	// create GPIO expanders
-	const gpio_exp_config_t* gpio_exp_config;
-	for (int count = 0; (gpio_exp_config = config_gpio_exp_get(count)); count++) gpio_exp_create(gpio_exp_config);
-
-	// set potential power GPIO (a GPIO-powered expander might be an issue)
-	parse_set_GPIO(set_power_gpio);
-
 	// shared I2C bus 
 	const i2c_config_t * i2c_config = config_i2c_get(&i2c_system_port);
 	ESP_LOGI(TAG,"Configuring I2C sda:%d scl:%d port:%u speed:%u", i2c_config->sda_io_num, i2c_config->scl_io_num, i2c_system_port, i2c_config->master.clk_speed);
@@ -89,6 +82,13 @@ void services_init(void) {
 		ESP_LOGW(TAG, "no I2C configured");
 	}	
 
+	// create GPIO expanders
+	const gpio_exp_config_t* gpio_exp_config;
+	for (int count = 0; (gpio_exp_config = config_gpio_exp_get(count)); count++) gpio_exp_create(gpio_exp_config);
+
+	// set potential power GPIO (a GPIO-powered expander might be an issue)
+	parse_set_GPIO(set_power_gpio);
+
 	const spi_bus_config_t * spi_config = config_spi_get((spi_host_device_t*) &spi_system_host);
 	ESP_LOGI(TAG,"Configuring SPI data:%d clk:%d host:%u dc:%d", spi_config->mosi_io_num, spi_config->sclk_io_num, spi_system_host, spi_system_dc_gpio);