Ответ на вопрос пользователя.
--------------------------------------------------
Блок MCP23017 активно используем и он в отличии от стандартного "не тормозит".
Прикрепленный блок содержит более подробное описание и по нему проще будет освоить его использование:
БЛОК ВВОДА-ВЫВОДА mcp23017/mcp23s17
1. Блок содержит два 8-разрядных регистра A и B, каждый из которых может настроен на вывод или ввод.
2. Настройка режимов работы регистров А и В:
R -ввод с инверсией и подтяжкой входов к +Vcc. Выполняется при каждом обращении к регистру.
r - ввод. Выполняется при каждом обращении к регистру.
w - вывод. Выполняется при каждом обращении к регистру.
W -вывод с записью по изменению. Выполняется при инициализации(1 раз) и при каждом
изменении значения регистра.
Использование режим W существенно разгружает шину i2c, и соответственно проект меньше "тормозит".
3. Обмен с регистрами осуществляется через шину i2c по адресу=adr или через SPI через пин cs=adr.
3. Если входное значение адреса устройств=adr <0, устройство не используется.
4. Для i2c: Обычно mcp23017 выпускаются с базовым адресом 0x20 (32 десятичный).
Это адрес по умолчанию установлен в библиотеке как "базовый адрес".
Пространство адресов может меняться входами a0,a1,a2 mcp23017 - всего восемь адресов.
Для удобства возможно применение значение аdr в диапазоне 0-7, он будет преобразован в 32/38.
5. Алгоритм поиска устройства на шине i2c. Период опроса в режиме поиска устройства постепенно
увеличивается со 100 мс до 2 сек с шагом 100 мс. После обнаружения устройства оно инициируется и
работа с ним выполняется в периодом опроса, определенный параметром пользователя
ПЕРИОД ОБНОВЛЕНИЯ В ТИКАХ 10_МС пока не будет обнаружено устройство.
6. Обмен с регистрами выполняется с периодом = ПЕРИОД ОБНОВЛЕНИЯ В ТИКАХ 10_МС.
Например, если значение этого параметра =5(установлен по умолчанию), период=10 х 5=50 мс.
7. Если ПЕРИОД ОБНОВЛЕНИЯ В ТИКАХ 10_МС=0, то обмен с регистрами выполняется
при каждом обращении к блоку.
8. Вход EN разрешает работу блока. Через этот вход можно также управлять периодом обмена с устройством.
В этом случае удобнее установить ПЕРИОД ОБНОВЛЕНИЯ В ТИКАХ 10_МС=0.
9. Если требуется управление через побитовое управление или побитовое чтение, можно применить стандартные
блоки FLProg из меню "Операции с битами": Bits->Byte, Byte->Bits.
10. Параметр пользователя ИНТЕРФЕЙС ПОДКЛЮЧЕНИЯ может принимать два значения (по умолчанию 'i'):
'i' - интерфейс i2c (используется чип mcp230170);
's' - интерфейс SPI (используется чип mcp23s170);
11. Параметр пользователя ИНИЦИАЛИЗИРОВАТЬ ИНТЕРФЕЙСЫ может принимать два значения (по умолчанию 'Y'):
'Y' - инициируется используемые интерфейсы функциями Wire.begin() или SPI.begin();
'N' - инициализация не выполняется. В этом случае считается, что интерфейсы уже инициализированы.
Опция может быть полезна при использовании контроллеров с настраиваемым пинами интерфейсов,
например ESP8266.
Примечание: со временем этот параметр будет устранен из параметров пользователя.
-----------------------------------------------------------------------------------------------------------------------------------
ecoins@mail.ru 12.07.19; 21.07.19; 28.10.19. new 07.04.2020, 01.06.20.
00_mcp23x17_вводвывод_регистров_A,B_(CODE).ubi
--------------------
Если у Вас возникают трудности, сделайте автономно работающий фрагмент проекта на стандартном блоке FLProg,
а мы доработаем под блок ecoins.
У вас нет необходимых прав для просмотра вложений в этом сообщении.