Подключил расширитель на микросхеме MCP23008, пины, отвечающие за адрес подключил на минус. Расширитель на команды не реагирует.
По ссылке I2C scan выдает адрес 0x40.
Протестировал на Rapsberry Pi, там все работает по адресу 0x20.
Кто-нибудь уже подключал MCP23008? может, я адрес микросхемы не так выставил?
Подключение расширителя портов MCP23008
Re: Подключение расширителя портов MCP23008
Все верно, адрес 0x20.
Какие настройки на портах куда подключен расширитель?
Какие настройки на портах куда подключен расширитель?
Re: Подключение расширителя портов MCP23008
Сначала настроил порт P34
Type I2C
Mode SDA
SCL 35
Dev MCP23008
--
Потом P35
Type I2C
Mode SCL
Type I2C
Mode SDA
SCL 35
Dev MCP23008
--
Потом P35
Type I2C
Mode SCL
Re: Подключение расширителя портов MCP23008
Похоже все настроено верно: viewtopic.php?f=1&t=1195&start=520#p26661
Если конечно не перепутали SCL/SDA. Неплохо бы фото подключения + скрины с настройками. Также что еще подключено на шине.
Тогда это уже вопрос к Андрею, возможно баг в прошивке.
Если конечно не перепутали SCL/SDA. Неплохо бы фото подключения + скрины с настройками. Также что еще подключено на шине.
Тогда это уже вопрос к Андрею, возможно баг в прошивке.
Re: Подключение расширителя портов MCP23008
День экспериментов дал результат:
Расширитель подключен к Мегадевайсу.
Питание не трогаю.
Перекинул SDA,SCL на рапсберри, подключил gnd.
Выполнил команду, переводящую первый пин в Output.
Вывел 0, вывел 1.
Реле расширителя срабатывает.
-
Перекинул SDA,SCL обратно на Мегадевайс.
Питание не трогал.
!!!Ура, первый пин отзывается на команды Мегадевайса.
Остальные пины молчат.
Перезагрузил расширитель.
Все пины молчат.
===========
ВЫВОД:
предположительно выходы программно в прошивке не переведены в режим OUTPUT.
то есть в регистре IODIR – I/O DIRECTION REGISTER (ADDR 0x00) надо выставить все биты в 1.
-
еще нашел регистр INPUT POLARITY (IPOL) REGISTER.
возможность инвертировать сигнал на выходах поможет включать реле (которые замыкают цепь при 0 на выходе MCP23008), по команде ON от Мегадевайса.
Расширитель подключен к Мегадевайсу.
Питание не трогаю.
Перекинул SDA,SCL на рапсберри, подключил gnd.
Выполнил команду, переводящую первый пин в Output.
Вывел 0, вывел 1.
Реле расширителя срабатывает.
-
Перекинул SDA,SCL обратно на Мегадевайс.
Питание не трогал.
!!!Ура, первый пин отзывается на команды Мегадевайса.
Остальные пины молчат.
Перезагрузил расширитель.
Все пины молчат.
===========
ВЫВОД:
предположительно выходы программно в прошивке не переведены в режим OUTPUT.
то есть в регистре IODIR – I/O DIRECTION REGISTER (ADDR 0x00) надо выставить все биты в 1.
-
еще нашел регистр INPUT POLARITY (IPOL) REGISTER.
возможность инвертировать сигнал на выходах поможет включать реле (которые замыкают цепь при 0 на выходе MCP23008), по команде ON от Мегадевайса.
Re: Подключение расширителя портов MCP23008
Тогда это точно в теме про прошивку надо писать про баг. Автор по какой-то причине не хочет пока давать исходники, а то бы давно уже это все отловилось. Мне так нужна будет более старшая МС - 23017, на 16 портов. Разница в управляющих - отправляется дополнительный байт канала.
Re: Подключение расширителя портов MCP23008
Пока Создатель создает тестовый стенд для исправления прошивки, поставил ардуину, которая при подаче питания подключается к i2c шине, настраивает пины MCP23008 выходами и возвращает управление мегадевайсу. =)
открытый код, конечно, не помешал бы
открытый код, конечно, не помешал бы
Re: Подключение расширителя портов MCP23008
http://ab-log.ru/files/File/megad-2561/ ... a8-hex.zip
начиная с этой версии все работает
начиная с этой версии все работает