Как подключить mcp23017 к atmega через i2c? Добрый день. На макетной плате стоит расширитель портов, подключенный к меге через и2ц интерфейс. На ноги расширителя подключены светодиоды. Не буду весь код писать, напишу псевдокодом
Иниуиализирую и2с,
Затем старт и2с,
Затем отправляю байт адреса расширителя
Затем отправляю старший байт (0)
Затем младший байт(0)
Затем стоп.
Сегодня написав код по такому алгоритму и выставив биты именно таким образом, светодиоды зажглись! Но потом я отключил питание от макетки, они потухли. И когда снова включил питание, они уже не горят. В чем дело может быть?

21 Авг 2019 в 06:22
248 +1
0
Ответы
1

Судя по описанию, проблема может быть связана с тем, что вы не сохранили состояние портов расширителя 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). Если все сделано правильно, то светодиоды должны снова загореться после включения питания.

20 Апр в 13:19
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 83 852 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир