Ответ на вопрос
Судя по описанию, проблема может быть связана с тем, что вы не сохранили состояние портов расширителя MCP23017. Когда вы отключили питание и снова подключили его, состояние портов в MCP23017 было сброшено по умолчанию.Для решения этой проблемы вам необходимо сохранить состояние портов в регистрах MCP23017 перед отключением питания. Вы можете использовать регистры GPIOA и GPIOB, которые хранят данные для портов A и B соответственно. После включения питания, вам необходимо направить данные обратно в эти регистры, чтобы восстановить состояние светодиодов.Примерный код для сохранения и восстановления состояния портов выглядит следующим образом:// Сохранение состояния портов перед выключением питания
// Считываем данные из регистров GPIOA и GPIOB
uint8_t dataA = i2c_read_byte(GPIOA_ADDR);
uint8_t dataB = i2c_read_byte(GPIOB_ADDR);
// Включение питания
// Восстановление состояния портов после включения питания
// Отправляем данные обратно в регистры GPIOA и GPIOB
i2c_write_byte(GPIOA_ADDR, dataA);
i2c_write_byte(GPIOB_ADDR, dataB);Пожалуйста, убедитесь, что вы правильно считываете и записываете данные из регистров MCP23017, и что используете правильные адреса регистров (GPIOA_ADDR и GPIOB_ADDR). Если все сделано правильно, то светодиоды должны снова загореться после включения питания.
Еще